[C++]多个对象构造、析构、构造和析构的顺序
2016-09-29 10:58
253 查看
#include <iostream>//多个对象构造和析构//1)当类中有成员变量是其它类的对象时,首先调用成员变量的构造函数,调用顺序与声明顺序相同;//之后调用自身类的构造函数//2)析构函数的调用顺序与对应的构造函数调用顺序相反////2、类成员中若有const修饰,必须在对象初始化的时候,给const int n 赋值//当类成员中含有一个const对象时,或者是一个引用时,他们也必须要通过成员初始化列表进行初始化//2)C++中提供初始化列表对成员变量进行初始化//语法规则//Constructor::Contructor() : m1(v1), m2(v1,v2), m3(v3)//{// // some other assignment operation//}//3)注意概念//初始化:被初始化的对象正在创建//赋值:被赋值的对象已经存在////4)注意://成员变量的初始化顺序与声明的顺序相关,与在初始化列表中的顺序无关//初始化列表先于构造函数的函数体执行
using namespace std;
class Parent{public: Parent(int ma, int mb){ a = ma; b = mb; cout << "a: " << a << " b: " << b << " Parent"<< endl; } ~Parent(){ cout << "Parent析构了..." << endl; getchar(); //测试 }
private: int a; int b;
};
class child{public: child():p1(1,2), p2(3,4),n(10) { cout << "child..." << endl; } ~child(){ cout << "child析构了..." << endl; getchar(); //测试 }private: Parent p1; Parent p2; const int n;};int main(){ child ch; getchar(); return 0;}
using namespace std;
class Parent{public: Parent(int ma, int mb){ a = ma; b = mb; cout << "a: " << a << " b: " << b << " Parent"<< endl; } ~Parent(){ cout << "Parent析构了..." << endl; getchar(); //测试 }
private: int a; int b;
};
class child{public: child():p1(1,2), p2(3,4),n(10) { cout << "child..." << endl; } ~child(){ cout << "child析构了..." << endl; getchar(); //测试 }private: Parent p1; Parent p2; const int n;};int main(){ child ch; getchar(); return 0;}
相关文章推荐
- c++对象成员变量的构造和析构顺序
- c++子类对象构造与析构的顺序对多态性的影响
- C++ 构造,析构顺序(静态对象)
- 派生类对象构造与析构的顺序
- C++对象的构造、赋值和析构
- static对象和非static对象构造和析构顺序的问题
- C++ 对象构造与析构以及内存布局
- C++ - 虚继承(virtual inheritance)的构造(construct)和析构(destruct)顺序
- 深度探索C++对象模型:5.构造、析构、拷贝语意学
- C++ 构造、析构的顺序
- 揭示C++中全局类变量的构造与析构顺序
- 揭示C++中全局类变量的构造与析构顺序 推荐
- c++ 对象的构造与析构(草稿)
- [C++]搞清楚类中构造与析构的顺序
- C++程序:C++ 构造、析构的顺序
- C++对象模型 ch5 构造 析构 拷贝语义学
- 关于C++继承体系中类的构造与析构的顺序【转贴】
- C++程序中抛出异常后对象的析构顺序
- C++构造和析构顺序
- C++ - 派生类(derived class) 的 构造(construct) 和 析构(destruct)顺序 详解