班内宣言:
Integer operator+ (const Integer& right);
课外定义:
Integer operator+ (const Integer& left, const Integer& right)
{
return left ;
}
编译器在声明和定义中强制执行不同的数字参数有什么意义?
答案 0 :(得分:4)
你在那里声明了两个不同的operator+
。正确的课外定义是这样的:
Integer Integer::operator+(const Integer& right)
{
return *this;
}
答案 1 :(得分:4)
第一个是二元运算符重载为成员函数,第二个是二元运算符重载为非成员函数。
当运算符被定义为成员时,显式参数的数量减少一,因为调用对象被隐式提供为操作数。因此,二元运算符采用一个显式参数,一元运算符为none。在二元运算符的情况下,左手操作数是调用对象,并且不会对其进行类型强制。
这与非成员操作员形成对比,后者可能会强制执行左操作数。
答案 2 :(得分:2)
这些被视为两种不同的方法,即它被视为方法重载。