读书人

c++ 运算符重载解决方案

发布时间: 2012-02-15 12:09:44 作者: rapoo

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不行;
如何实现常量在前的这种形式?实现“常量+对象”

[解决办法]

探讨
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;} 

读书人网 >C++

热点推荐