与标题相同。 我有运算符重载的问题。
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();
有效...
答案 0 :(得分:1)
第一个示例未使用operator=
(是的,即使有=
符号也是如此!)。
由于它是声明/定义/初始化,因此使用了构造函数。
您可以创建一个构造函数来执行所需的操作。这应该在您的C ++书中进行描述。
顺便说一句,您的operator=
的实现很奇怪。您应该修改当前对象,而不是创建并返回一个新对象。同样,请参阅您的书以获取正确的方法。