我当时正在研究C ++,当我编写了一个小程序以了解有关运算符重载的更多信息时,该程序在主要功能中产生了错误,我在其中写了“ Ponto p1(1,5),p2(3,4),Soma;”。谁能解释我如何正确使用Operator Overloagin?谢谢。
PS:该程序使用葡萄牙语(我的母语),但是我认为找到我的错误不会有问题。
#include <iostream>
using namespace std;
class Ponto
{
private:
int x,y;
public:
Ponto(int a, int b)
{
x = a;
y = b;
}
Ponto operator+(Ponto p);
};
Ponto Ponto::operator+(Ponto p)
{
int a, b;
a = x + p.x;
b = y + p.y;
return Ponto(a, b);
}
int main(void)
{
Ponto p1(1,5), p2(3,4), Soma;
Soma = p1.operator+(p2);
return 0;
}
最佳答案
您没有默认的构造函数,因此当它尝试构造Soma
时会出现错误。
提供自己的构造函数后,将不再生成编译器提供的默认构造函数。您要么必须自己制作,要么将默认值添加到采用参数的构造函数上的参数。