C++ C++;构造函数初始化引用赋值
我相信这个问题以前有人问过。但我似乎找不到我正在寻找的确切答案。基本上,我试图创建一个类的对象作为另一个类的成员,并通过构造函数通过引用拥有的对象传递其中一个成员。有时这似乎有效,但有时我得到一个随机值 我认为我不理解初始化顺序的一些基本规则 下面是代码示例:C++ C++;构造函数初始化引用赋值,c++,reference,constructor,initialization,C++,Reference,Constructor,Initialization,我相信这个问题以前有人问过。但我似乎找不到我正在寻找的确切答案。基本上,我试图创建一个类的对象作为另一个类的成员,并通过构造函数通过引用拥有的对象传递其中一个成员。有时这似乎有效,但有时我得到一个随机值 我认为我不理解初始化顺序的一些基本规则 下面是代码示例: class Foo { public: Foo(); private: int b; Bar c; }; class Bar { public: Bar(int& parm); private:
class Foo
{
public:
Foo();
private:
int b;
Bar c;
};
class Bar
{
public:
Bar(int& parm);
private:
int& b_ref;
};
Foo::Foo(): b(0), c(b)
{}
Bar::Bar(int& parm): b_ref(parm)
{}
我想要的是c拥有一个对b的引用,并且能够看到值的变化
在这种情况下,我不应该使用初始化列表吗?规则是按照对象在
类中声明的顺序初始化对象。在这种情况下,这意味着b
在c
之前已初始化,因此此代码应始终正常工作
如果您交换了b
和c
成员的顺序,那么param
引用的int
将不会在Bar
的构造函数中初始化是的,我刚刚意识到我的实际代码已经交换了成员!谢谢你,这正是问题所在。