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

重载+号时,编译器告诉小弟我参数太多?

2012-03-06 
重载+号时,编译器告诉我参数太多??我在重载加号时如下:CStr&operator+(constCStr&pStr,constchar*pString)

重载+号时,编译器告诉我参数太多??
我在重载加号时如下:

CStr&operator+(const   CStr   &pStr,const   char   *pString)   const;

编译器却指出这句error   C2804:   binary   'operator   + '   has   too   many   parameters

加号不是两个参数吗?



[解决办法]
弄成友原函数,友原是两个参数
当是成员函数的时候只需要一个参数
[解决办法]
参数是太多,成员函数时只应该用一个参数,比如a+b;中a本身就是第一个参数啊,定义成友员函数要定义两个参数.
[解决办法]
运算符重载的规则

1.友元运算符的参数规则与类成员运算符的参数规则不同, 一员运算符必须显式地声明一个参数, 二员运算符必须显式地声明两个参数. 类成员运算符重载时, 参数中隐含了一 个this指针.


2. 重载运算符不能改变原有运算符的优先级, 结合性和操作数个数.


3. 重载运算符不能使用缺省参数.


4. 除赋值运算符外, 重载运算符可由派生类继承下去.


5. 运算符=、()、[]和-> 可作为类成员运算符, 不能作为友员运算符.


6. 运算符“.”、“::” 、“?:” 不能重载.

热点排行