【问题标题】:How can I initialize a member object of a class in constructor in c++? [duplicate]如何在 C++ 的构造函数中初始化类的成员对象? [复制]
【发布时间】:2013-08-18 10:15:26
【问题描述】:

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

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?

【问题讨论】:

    标签: c++ class constructor initialization


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      正如之前的评论所指出的,您使用初始化列表,而不是在构造函数主体内。这很好,因为它是 A_instance 在创建时而不是之后被初始化。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-14
        • 2012-08-14
        • 1970-01-01
        • 2016-05-03
        • 1970-01-01
        • 1970-01-01
        • 2021-12-26
        相关资源
        最近更新 更多