有时候为了方便书写,我们需要重载运算符。比如class test{}是非内部类型数据,加法可能要这么写 a->getnum() + b->getnum();
如果我们重载了+ 运算符,那么可以实现 a+b的简洁写法。废话少说,拿 cout << 的 “ << ”运算符举例
当我们使用 cout<<value;时, 底层转换成类似这样的代码:
ostream& << ( oustream& out, MyType& value) { ....具体实现我不管, 我只提供样式....}
其他运算符大抵如此;
看清楚了,这个运算符只有两个参数, 不能放在类内实现(类会默认在第一个参数之前插入一个this指针参数)。
示例:
class test
{ //足够简单但够用了
public:
test(int i = 1) : num_(i) {}
int getNum() { return num_; }
private:
int mum_;
}
//重载运算符
ostream& << (ostream& out, test& a) //&引用避免拷贝整个test
{
out << a.getNum();
return out;
}
int main()
{
test a;
cout << a;
}
总结: 运算符重载需要注意处理this指针问题, 其他的都是小case, 注意返回值和参数的拷贝问题。
本文详细介绍了C++中如何进行运算符重载,特别是重载<<运算符以简化对象输出的过程。通过实例展示了如何避免this指针问题,以及处理参数和返回值的拷贝问题。
396

被折叠的 条评论
为什么被折叠?



