我想以这种方式重载运算符*:
#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/