c++ 运算符重载
class number
{
private:
int a;
public:
number operator +(number &n1);
}
....
main()
{
number A,B;
B = A + 2;
B = 2 + A;
}
.....
B = A + 2;这个可以但是B = 2 + A不行;
如何实现常量在前的这种形式?实现“常量+对象”
[解决办法]
[解决办法]
道理很简单
任何一本C++书上都会这么说:
重载运算符为类成员函数时,当运算符为一元运算符,操作数即目的对象;当运算符为二元,左操作数为目的对象.
以上目的对象指this指针指向的对象.
为了使左操作数可以是其他类型,必须重载为非成员函数
[解决办法]
- C/C++ code
#include <iostream>using namespace std;class number{ friend number operator+(const number&, const number&);private: int a;public: number(const int val = 0) { this->a = val; }};number operator+(const number &n1, const number &n2) { return number(n1.a + n2.a);}int main(){ number A, B; B = A + 2; B = 2 + A; return 0;}