C++返回对象,这可能吗?
C++ return object, is this possible?
class A{
int a;
A (const A& A) {
this->a = A.a
} //copy constructor
A& operator=(const A& test) {
return *(new A(test));
} //operator overloading
};
这可能吗?
*(new A(test))
真的返回对类A
实例的引用吗?
可能吗? 是的。 你应该这样做吗? 不。 一,因为它是内存泄漏,因为没有人会根据分配的结果调用delete
。 第二,它不是真正的"作业",因为this->a
没有被A::operator=()
修改。
实现这一点的正确方法更像这样:
class A
{
private:
int a;
public:
A(int val = 0)
: a(val)
{
}
A(const A& A)
: a(A.a)
{
}
A& operator=(const A& test)
{
this->a = test.a;
return *this;
}
};
当然,对于这样一个简单的例子,你可以完全消除复制构造函数和赋值运算符,让编译器生成的默认实现为你处理复制A::a
。
相关文章:
- 如何返回对象C++的数组
- 如何使用std::min和std::less返回对象
- 如何通过引用返回对象
- 如何安全地从 DLL 调用返回对象
- 如何在不销毁对象的情况下返回对象列表
- 什么更好?返回对象指针列表?或返回指向对象列表的指针?
- 使用返回对象的函数处理错误
- 何时返回指针与返回对象的一般经验法则?
- 如何使用运算符+重载函数正确返回对象?
- C++,class,一个返回对象的函数
- 运算符的返回对象 = C++ 中的重载
- 从队列返回对象的最快方法,但前提是队列有它
- 如何使用条件表达式返回对象指针?
- 使用构造函数从函数返回对象
- 隐式转换函数的返回对象时是否会影响性能?
- 返回对象时从'const DList<int>* const'到 'DList<int>*' [-fallowive] 的转换无效
- 按值和堆栈大小限制返回对象
- 我应该如何从函数返回对象?
- c++:何时传递指针与返回对象
- 返回对象会丢失属性