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
实例的引用?
答案 0 :(得分:1)
有可能吗?是。你应该这样做吗?第一,因为它是一个内存泄漏,因为没有人会在分配结果上调用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
。