我当时正在研究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时会出现错误。

提供自己的构造函数后,将不再生成编译器提供的默认构造函数。您要么必须自己制作,要么将默认值添加到采用参数的构造函数上的参数。

07-28 02:27