<分区>
我是 C++ 的新手,我遇到了以下问题:
假设您有一个创建新对象并返回该对象的函数。最好的方法是什么? 我找到了 3 种不同的解决方案。
方案一使用拷贝构造函数
MyClass getMyClass() {
MyClass obj;
//work with obj, set values...
return obj;
}
据我所知,您创建一个新对象,复制该对象,销毁第一个对象并返回复制的对象。所以我创建了两个对象,但我只需要一个。是吗?
解决方案2在堆上创建对象并使用指针
MyClass* getMyClass() {
MyClass* obj = new MyClass();
//work with obj, set values...
return obj;
}
这似乎是最糟糕的解决方案,您必须自己进行内存管理。
解决方案3将对象作为参数传递
MyClass getMyClass(MyClass& obj) {
//work with obj, set values...
return obj;
}
您创建一个默认对象并在该函数中设置所有值。
我还想过使用 unique_ptr<MyCLass>
但存在同样的问题,即 unique_ptr
当离开函数作用域时被销毁。