|
C++新语法:构造函数的初始化列表Demo
- #include <iostream>
- using namespace std;
- class A
- {
- private:
- int x,y;
- public:
-
- A(int _x, int _y){
- x = _x;
- y = _y;
- cout << "类A的有参的构造函数!x=" << x << endl;
- }
- ~A(){
- cout << "类A的析构函数!x=" << x << endl;
- }
- int get_x(){
- return x;
- }
- void set_x(int _x){
- x = _x;
- }
- };
- //C++新语法:构造函数的初始化列表Demo
- class B
- {
- private:
- int x,y;
- A a2, a1;
- //一个类里面包含另外一个类的对象作为成员变量,而被包含的类对象只能用有参的构造函数,此时才需要用到【构造函数的初始化列表】
- //构造函数的调用规则:写了就必须要用! 没有机会初始化被包含的类对象a1和a2!编译器不知道该分配多少内存
- //新的语法: 类名::构造器(): a1(3,4),a2(5,6)
- public:
- B(int _x, int _y) : a1(3,4), a2(5, 6){
- x = _x;
- y = _y;
- cout << "类B的有参的构造函数!x=" << x << endl;
- }
- B(int _x, int _y, int m, int n, int q, int t) : a1(m,n), a2(q, t){
- x = _x;
- y = _y;
- cout << "类B的有参的构造函数!_顺便传参给被包含的类对象 x=" << x << endl;
- }
- ~B(){
- cout << "类B的析构函数!x=" << x << endl;
- }
-
- };
- int main(){
- //B bb(10,20);
- B bbb(10,20, 100,200,300,400);
- // 先执行被包含对象的构造函数,如果被包含对象有多个,则按定义顺序来构造 而不是初始化列表顺序来构造
- // 析构函数:与构造函数的调用顺序相反
- return 1;
- }
复制代码
|
|