在Linux下G++ 使用的是ISO C++这与我们在网上找到的很多基于Windows VC的C++在operator操作符重载上有一定不同,通过这几天自己摸索写下Linux ISO C++ operator+操作符重载实现.
在这里我提供了一个实例如下:
1.我们需要实现类似于:Class A = Class B + int;
Class A = Class B + Class C;
Class A = int + Class B;这样的功能.
2.第一和第二种情况比较容易实现,方法和VC下基本一致,可以通过下面的方式实现:
<类> operator+ (const int) const;
<类> operator+ (cosnt 类&) const;
3.第三类情况实现和VC++ 有区别,我是通过下面的方法实现的:
friend <类> operator+ (const int,const <类>&);
注意这里friend后的类只能使用传值的方式,不能使用传址或引用的方式,否则会出现参数个数使能是0个或1个的错误.
在写函数实现部分时需写成
<类> operator+ (const int value_left,const <类>& value_right){ ... }
否则会提示这个实现的函数没有在<类>中声明.
通过这样的重载我们就可以实现第三种情况了,这种情况一样适用于其他双目运算符重载.
在这里我提供了一个实例如下:
1.我们需要实现类似于:Class A = Class B + int;
Class A = Class B + Class C;
Class A = int + Class B;这样的功能.
2.第一和第二种情况比较容易实现,方法和VC下基本一致,可以通过下面的方式实现:
<类> operator+ (const int) const;
<类> operator+ (cosnt 类&) const;
3.第三类情况实现和VC++ 有区别,我是通过下面的方法实现的:
friend <类> operator+ (const int,const <类>&);
注意这里friend后的类只能使用传值的方式,不能使用传址或引用的方式,否则会出现参数个数使能是0个或1个的错误.
在写函数实现部分时需写成
<类> operator+ (const int value_left,const <类>& value_right){ ... }
否则会提示这个实现的函数没有在<类>中声明.
通过这样的重载我们就可以实现第三种情况了,这种情况一样适用于其他双目运算符重载.