如何重载='MyClass object = f(x)'的运算符?

时间:2019-01-01 17:52:12

标签: c++

与标题相同。 我有运算符重载的问题。

int variable = 5;
int* f() {
    return &variable;
}

class MyClass {
    public:
    int* i;
    MyClass operator=(int* j) {
        MyClass x;
        x.i=j;
        return x;
    }
};

如果我尝试使我的对象像这样:

MyClass m=f();

它不起作用。但这:

MyClass m;
m=f();

有效...

1 个答案:

答案 0 :(得分:1)

第一个示例未使用operator=(是的,即使有=符号也是如此!)。

由于它是声明/定义/初始化,因此使用了构造函数。

您可以创建一个构造函数来执行所需的操作。这应该在您的C ++书中进行描述。

顺便说一句,您的operator=的实现很奇怪。您应该修改当前对象,而不是创建并返回一个新对象。同样,请参阅您的书以获取正确的方法。