在构造函数中使用 'new'? C++

Use 'new' in constructor? c++

假设我有两个 类,myclass1 和 myclass2。假设 myclass2 有一个字段 myclass1 object1。所以 myclass2 header 看起来像这样:

 class myclass2 {
      public:
             myclass2();
             myclass2(int arg);
      private:
             myclass1 object1;
}

假设 myclass1 有一个像这样的 header:

 class myclass1 {
      public:
             myclass1();
             myclass1(int arg);
      private:
             int var1;
}

现在假设在我的主函数中我想实例化一个类型为 myclass2 的 object,如下所示:

int main(){

         myclass2 object2(int VAR);

}

然后为了 object2 的私有字段 object1 在实例化 object2 时将私有字段 var1 设置为等于 VAR,myclass2 的构造函数应该是这样的(?):

myclass2::myclass2(int arg){
         object1 = object1(arg);

}

或者这行得通吗(?):

   myclass2::myclass2(int arg){
         object1(arg);

}

或者在这种情况下,我必须在 myclass1 中有一个 mutator 函数才能在 myclass2 的构造函数中访问 object1 的私有字段 var1 吗?

最后,这能完成任务吗(?):

 myclass2::myclass2(int arg){
         myclass1 *type1pointer;
         type1pointer = new myclass1(arg);
         object1 = *type1pointer; 

}

使用initializer list:

class myclass2 {
public:
    myclass2(int arg) : object1(arg) {}
private:
    myclass1 object1;
};

因此你只初始化了你的对象一次。 这样,不会调用 object1 默认构造函数,从而避免了默认构造,然后是特定的 myclass1 变元