c++中子对象的初始化可在复合类的构造函数的函数体内进行吗?还是子对象的初始化只能在初始化列表中进行?

严格意义上的子对象初始化只能在复合类的构造函数的初始化列表中进行。
作为变通,你可以在子对象所属的类中把真正执行初始化工作的代码写成一个普通公开成员函数,在复合类的构造函数体内调用这个函数。

class A{
    int data;
public:
    A(){}
    A(int d):data(d){}
    void init(int d){data=d;}
};

class B{
    A a;
public:
    B(int d):a(d)//常规方法,在初始化列表中初始化子对象
    {
    }
};

class C{
    A a;
public:
    C(int d)//变通方法,在函数体中初始化子对象
    {
        a.init(d);
    }
};

原文链接: https://www.cnblogs.com/carbs/archive/2012/04/04/2431614.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    c++中子对象的初始化可在复合类的构造函数的函数体内进行吗?还是子对象的初始化只能在初始化列表中进行?

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/46044

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月8日 下午10:30
下一篇 2023年2月8日 下午10:31

相关推荐