C ++返回对象,这可能吗?

时间:2014-08-29 03:16:02

标签: c++ instance-variables

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实例的引用?

1 个答案:

答案 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