当我创建一个Example(class)的对象时,我想用等于运算符赋予它一个int值,只是为了看看运算符重载是如何工作的。
但我无法使用以下代码编译它:
类:
Example& Example::operator=(int number)
{
this->number = number;
return *this;
}
主:
Example x1 = 10;
答案 0 :(得分:1)
尽管它看起来不是一个赋值,但它是一个初始化。它调用构造函数,而不是赋值运算符。
试试这个:
Example x1; // initialize
x1 = 10; // assign
在您的示例中,它正在寻找以int
为参数的构造函数。
答案 1 :(得分:1)
该行
Example x1 = 10;
与
相同Example x1(10);
或
Example x1 = Example(10);
它调用构造函数而不是赋值运算符。显然它需要一个像:
这样的构造函数Example(const int& n) : number(n) {}