有时候为了方便书写,我们需要重载运算符。比如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, 注意返回值和参数的拷贝问题。