Operator =在C ++中使用不同的参数进行过载?

时间:2016-09-11 14:22:12

标签: c++ operator-overloading

当我创建一个Example(class)的对象时,我想用等于运算符赋予它一个int值,只是为了看看运算符重载是如何工作的。

但我无法使用以下代码编译它:

类:

Example& Example::operator=(int number)
{
    this->number = number;
    return *this;
}

主:

Example x1 = 10;

2 个答案:

答案 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) {}