读书人

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

发布时间: 2012-03-06 20:47:55 作者: rapoo

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

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. 运算符“.”、“::” 、“?:” 不能重载.

读书人网 >VC/MFC

热点推荐