在构造函数中使用 '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;
}
class myclass2 {
public:
myclass2(int arg) : object1(arg) {}
private:
myclass1 object1;
};
因此你只初始化了你的对象一次。
这样,不会调用 object1 默认构造函数,从而避免了默认构造,然后是特定的 myclass1
变元
假设我有两个 类,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;
}
class myclass2 {
public:
myclass2(int arg) : object1(arg) {}
private:
myclass1 object1;
};
因此你只初始化了你的对象一次。
这样,不会调用 object1 默认构造函数,从而避免了默认构造,然后是特定的 myclass1
变元