首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

VC++中如何重载+这个运算符

2013-12-15 
VC++中怎么重载+这个运算符当一个函数退出的时候就会自动把局部变量给清空了,但是我的目的是要得到一个运

VC++中怎么重载+这个运算符
当一个函数退出的时候就会自动把局部变量给清空了,但是我的目的是要得到一个运算结果。肿么办?
[解决办法]

引用:
class yy{
....
};
class  xx{
xx(){};
xx(const xx& a):xx(a.m0.....){
   ......
}
// 这个用于实际计算两个 类型都是 xx的对象 相加  
xx& operator +=(const xx&b){
     ....
     return *this;
}
// 这个用于实际计算xx ,yy 两个不同类型对象相加
xx& operator +=(const yy&b){
     ....
     return *this;
};

//operator + 
// 1) xx 和 xx相加
friend xx operator +(const xx & a,const xx&b){
      return xx(a) += b;
   };
2)xx 和 yy 相加
friend xx operator +(const xx& a,const yy& b){
      return xx(a) += b;
   };
3)yy 和 xx 相加
friend xx operator +(const yy& a,const xx& b){
      return xx(b) += a;
   };
};

上面的 yy 可以换成 int 或者 double
对应的参数 const yy&b 换成 int b,double b;

比较复杂的类型,C++11可以用右值引用 && ,和 move 来处理。         

正确。

运算符重载其实就算是一个函数。该函数是可以有返回值的。
在重载+时,返回结果既可。
[解决办法]
你的这个,其实就是字符串类的实现,必要的时候,可以使用引用计数。

具体实现,可以参考 string 和CString 的实现。
<<More Effective C++>>
里面,关于引用计数的章节,里有一个 String类,可供参考。
 



热点排行