в чем разница между перегрузкой оператора внутри или вне класса?

Я знаю, что в C ++ есть два способа перегрузки. Мы можем перегрузить его внутри (например, class a ) или снаружи (например, class b ). Но вопрос в том, есть ли разница между ними во время компиляции или выполнения или нет?

class a
{
public:
    int x;
    a operator+(a p) // operator is overloaded inside class
    {
        a temp;
        temp.x = x;
        temp.x = p.x;
        return temp;
    }
};

class b
{
public:
    friend b operator+(b, b);
    int x;
};

b operator+(b p1, b p2) // operator is overloaded outside class
{
    p1.x += p2.x;
    return p1;
}
27
задан Azeem 20 April 2018 в 09:45
поделиться