gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 00:46:11 25 4
gpt4 key购买 nike

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

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

假设 myclass1 有一个像这样的标题:

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

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

int main(){

myclass2 object2(int VAR);

}

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

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

或者这行得通吗(?):

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

}

或者在这种情况下,我必须在 myclass1 中有一个 mutator 函数来访问 myclass2 的构造函数中对象 1 的私有(private)字段 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 mutator

关于c++ - 在构造函数中使用 'new'? C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39437872/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com