重载+号时,编译器告诉我参数太多??
我在重载加号时如下:
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. 运算符“.”、“::” 、“?:” 不能重载.