如何在c ++中的构造函数中初始化类的成员对象?

时间:2013-08-18 10:15:26

标签: c++ class constructor initialization

为清楚起见,请考虑以下示例:

class A{
    public:
        A(int i){...}
}

class B{
    private:
        A A_instance;
    public:
        B(){
           ...
           //how can i initialize the A_instance with specific constructor ?
           ...
        }
}

我想,你得到的是我的问题(缺乏知识:D)。如何使用B类中的特定构造函数初始化A_instance?

2 个答案:

答案 0 :(得分:3)

您需要使用构造函数初始化列表,这是显式初始化数据成员的唯一方法。

B() : A_Instance(42) 
{
  // by the time we get here, all data members have been initialized
}

答案 1 :(得分:1)

如前所述,您使用初始化列表,而不是构造函数体内。这很好,因为它是A_instance在创建时而不是在之后初始化。

class A{
    public:
        A(int i){...}
}

class B{
    private:
        A A_instance;
    public:
        B() : A_instance(0) {
           ...
           ...
        }
}