我想以这种方式重载运算符*:

#include <iostream>
using namespace std;

class A{
    public:
        double liczba;

    A operator * (int a){
        A b;
        b.liczba = this->liczba * a;
        return b;
    }
};


int main(){
    A a;
    2*a;
    return 0;
}


我收到错误,我知道a * 2不会引起问题,但是如何执行2 * a?

最佳答案

您需要声明一个朋友运算符:

class A{
    public:
        double liczba;

    A operator * (int a){
        A b;
        b.liczba = this->liczba * a;
        return b;
    }

    friend A operator*(int a, A & b);// friend operator
};

A operator*(int a, A & b)
{
    return b * a;
}


理想情况下,A & b将是const A & b,但是您还需要声明已经定义为const的运算符。

关于c++ - C++中的重载运算符*,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29777801/

10-16 03:07