码迷,mamicode.com
首页 > 编程语言 > 详细

C++(二十八) — 构造函数的初始化列表

时间:2018-12-29 13:54:57      阅读:184      评论:0      收藏:0      [点我收藏+]

标签:函数   因此   font   color   有关   调用顺序   style   c++   问题:   

1、解决的问题:

  在 B 类中,组合了一个 A 类对象,其中A类设计了构造函数。由于构造函数的调用规则,设计了构造函数就必须调用,但在定义B类时没有机会初始化A,因此采用构造函数的初始化列表来解决。

 2、构造和析构调用顺序

  先执行被组合对象的构造函数,如果组合对象有多个,则按照定义顺序,而不是按照初始化列表顺序。

    析构函数,和构造函数的调用顺序相反。

   举例如下:

class A
{
public:
    A(int a_)
    {
        a = a_;
        cout << "A的构造函数,a: " << a << endl;
    }
    ~A()
    {
        cout << "A的析构函数 " << endl;
    }
private:
    int a;
};

class B
{
public:
    B(int b1_, int b2_) :a1(1), a2(2)
    {
        b1 = b1_;
        b2 = b2_;
    }
    B(int b1_, int b2_, int m, int n) :a1(m), a2(n)
    {
        b1 = b1_;
        b2 = b2_;
        cout << "B的构造函数" << endl;
    }
    ~B()
    {
        cout << "B的析构函数 " << endl;
    }
private:
    int b1, b2;
    //A类别构造函数的调用与定义顺序有关,与初始化列表顺序无关。
    A a1;
    A a2;
};

void display()
{
    B obj_b1(1, 2, 3, 4);
}

void main()
{
    //A a0(10);
    //B obj_b0(1, 2);
    //B obj_b1(1, 2, 3, 4);
    display();

    system("pause");
}

 

C++(二十八) — 构造函数的初始化列表

标签:函数   因此   font   color   有关   调用顺序   style   c++   问题:   

原文地址:https://www.cnblogs.com/eilearn/p/10194897.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!