【发布时间】:2013-07-26 08:05:28
【问题描述】:
我有以下 c++ 类
class Object
{
public:
Object(parameters);
...
const Object& method1(parameters) const;
Object& method2(parameters) const;
private:
}
method1 和 method2 的实现是:
const Object& Object::method1(parameters) const
{
...
Object* _obj = new Object;
...
return *_obj;
}
Object& Object::method2(parameters) const
{
...
Object* _obj = new Object;
...
return *_obj;
}
我还没有定义复制构造函数。我知道函数返回对分配对象的引用,我仍然必须使用“删除”来删除它。 我想避免浪费内存并保留信息隐藏。
这是执行此操作的正确方法,还是我遗漏了什么?
【问题讨论】:
-
请在寻求帮助时尝试通过缩进使您的代码可读
-
为什么不按值返回
object?通过返回一个动态分配的实例,你可以获得什么(除非它的生命周期是由创建它的object以某种方式管理的)? -
尝试删除返回的内容,看看编译器怎么说。
-
“这是正确的做法吗?” - 绝对不是。 “或者我错过了什么?” - 是的,C++ 不是 Java。 “我想避免浪费内存并保留信息隐藏。” - 然后不要将它浪费在动态分配上。