我是C++的新手,我遇到了以下问题:
想象一下,您有一个创建新对象并返回此对象的函数.这样做的最佳方法是什么?我找到了3种不同的解决方案.
解决方案1使用复制构造函数
MyClass getMyClass() {
MyClass obj;
//work with obj, set values...
return obj;
}
Run Code Online (Sandbox Code Playgroud)
据我所知,你创建一个新对象,复制该对象,销毁第一个对象并返回复制的对象.所以我创建了两个对象,但我只需要一个.是对的吗?
解决方案2在堆上创建对象并使用指针
MyClass* getMyClass() {
MyClass* obj = new MyClass();
//work with obj, set values...
return obj;
}
Run Code Online (Sandbox Code Playgroud)
这似乎是最糟糕的解决方案,您必须自己进行内存管理.
解决方案3将对象作为参数传递
MyClass getMyClass(MyClass& obj) {
//work with obj, set values...
return obj;
}
Run Code Online (Sandbox Code Playgroud)
您可以创建默认对象并在函数中设置所有值.
我也很想使用unique_ptr<MyCLass>但是存在同样的问题,即在unique_ptr保留功能范围时会被破坏.
| 归档时间: |
|
| 查看次数: |
2241 次 |
| 最近记录: |