假设我有一个C++类Foo和一个必须使用构造函数创建的Bar类,其中传递了Foo指针,并且这个指针在Bar实例的生命周期中保持不变。正确的做法是什么?
实际上,我认为我可以像下面的代码一样编写,但它不能编译。
class Foo;
class Bar {
public:
Foo * const foo;
Bar(Foo* foo) {
this->foo = foo;
}
};
class Foo {
public:
int a;
};
欢迎任何建议。
发布于 2009-09-14 20:24:14
您需要在初始化器列表中执行此操作:
Bar(Foo* _foo) : foo(_foo) {
}
(请注意,我重命名了传入变量以避免混淆。)
发布于 2009-09-14 20:26:00
我相信您必须在初始化器中执行此操作。例如:
Bar(Foo* foo) : foo(foo) {
}
顺便说一句,如果你永远不会改变foo所指向的东西,那就把它作为一个引用来传递:
Foo& foo;
Bar(Foo& foo) : foo(foo) {
}
发布于 2009-09-14 20:25:37
初始化常量成员和其他特殊情况(如父类)可以在初始化器列表中完成
class Foo {
private:
const int data;
public:
Foo(int x) : data(x) {}
};
或者,类似地,对于父级初始化
class Foo {
private:
int data;
public:
Foo(int x) : data(x) {}
};
class Bar : Foo {
public:
Bar(int x) : Foo(x) {}
};
https://stackoverflow.com/questions/1423696
复制相似问题