读书人

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

发布时间: 2013-12-15 22:17:19 作者: rapoo

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类,可供参考。




读书人网 >C++

热点推荐