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

c++Primer运算符重载有关问题

2013-10-07 
c++Primer运算符重载问题书上说的,对称操作符,如自述操作符相等操作符,关系操作符和位操作符最好定义为非

c++Primer运算符重载问题
书上说的,对称操作符,如自述操作符相等操作符,关系操作符和位操作符最好定义为非成员函数。
我想知道为什么?
[解决办法]
你要知道位操作符返回的值是什么?即他的左操作数的问题,他必须是流,不然无法进行std::cout << p << w << std::endl;这样连续的输出对象,而成员函数的左操作数被绑定为对象自身了,你最多返回的是对象本身,是无法返回流的,这就是为什么将操作符定义为friend或者普通函数的原因。
关系操作符最好是定义为非成员函数,这不是强求,只是建议,这是人家总结的,可能与效率有关
[解决办法]
可能你会这么写std::ostream&  operator <<(std::ostream &os);
如果这么写,你就必须明白这会导致输出对象的顺序,他此时是从后往前输出的,不符合逻辑的东西,这可能被限制了
[解决办法]
如果定义为成员函数,那应该返回左操作数,但是比如关系运算符,应该返回两个对象比较的结果,而非对象。嗯。我是这样理解的。

热点排行