C++类成员中包含其他类时的初始化问题
2016-09-30 19:10
190 查看
当B中包含A类时,A在什么时候初始化呢?
例如:
A is constructed!
A is constructed!
B is constructed!
A构造了两次,说明A在声明时就已经调用了构造函数。
如何只让A调用一次呢?可以使用指针解决这个问题。在A的构造函数中带有参数时,会给参数传递带来方便。
A is constructed!
B is constructed!
例如:
#include<iostream> using namespace std; class A { public: A() { cout << "A is constructed!" << endl; } }; class B { private: A a; public: B() { a = A(); cout << "B is constructed!" << endl; } }; int main() { B b = B{}; system("pause"); }A是在声明时构造还是在B()中构造呢?运行结果如下
A is constructed!
A is constructed!
B is constructed!
A构造了两次,说明A在声明时就已经调用了构造函数。
如何只让A调用一次呢?可以使用指针解决这个问题。在A的构造函数中带有参数时,会给参数传递带来方便。
#include<iostream> using namespace std; class A { public: A() { cout << "A is constructed!" << endl; } }; class B { private: A *a; public: B() { a = new A(); cout << "B is constructed!" << endl; } ~B() { delete a; } }; int main() { B b = B{}; system("pause"); }运行结果如下:
A is constructed!
B is constructed!
相关文章推荐
- C++类成员变量初始化顺序问题
- C++类的构造函数列表成员初始化的顺序问题
- 类的const、static、const static成员初始化位置及其他需要注意的问题
- c++类几个特殊成员的初始化问题
- C++类的数据成员的初始化相关问题
- 关于C++类的成员初始化列表的相关问题
- C++类成员变量初始化顺序问题
- 类成员初始化问题 09.2.23
- C++类数据成员的初始化
- UserControl 中包含封装了集合对象的属性被设计器自动初始化所引起的错误!也有关于List的问题
- C++类成员和数据成员初始化总结
- C++中关于类中常数静态成员初始化的问题
- 关于初始化C++类成员
- 初始化C++类成员和在你的MFC应用中加入位置栏
- 关于初始化C++类成员
- c++成员变量初始化问题
- 关于C++类成员的初始化
- 初始化C++类成员和在你的MFC应用中加入位置栏
- 初始化C++类成员和在你的MFC应用中加入位置栏
- 转-关于初始化C++类成员