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

[]、()、>=这几个运算符如果要重载,为什么必须重载为成员函数而不能重载为友元?多谢回答

2013-06-26 
[]、()、-、这几个运算符如果要重载,为什么必须重载为成员函数而不能重载为友元?谢谢回答![]、()、-、这几个

[]、()、->、=这几个运算符如果要重载,为什么必须重载为成员函数而不能重载为友元?谢谢回答!
[]、()、->、=这几个运算符如果要重载,为什么必须重载为成员函数而不能重载为友元?谢谢回答! 重载
[解决办法]
作为成员函数重载时,调用对象就是第一个参数,比如=作为成员函数重载,那么class1=class2,class1这个调用对象就是=的第一个参数,即第一个操作数,如果作为友元函数重载,那么就不能像class1=class2这样调用了,这与=本来的用法就不一样,因为作为友元函数重载的话,=必须要两个操作数   仅个人意见
[解决办法]
矫枉必须过正!嘿嘿!
[解决办法]

引用:
Quote: 引用:

为什么呢? 因为
1. C++不允许全局重载这几个操作符.
2. C++也没有提供调用对象作为参数放进去.

struct A;
void operator(A*, int) // 非法
{}
第一点不明白,请解释一下,谢谢

就是只要你试图放在全局以重载形式写, 就算你错. 

热点排行