'operator =' must be a member啥意思
来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/04/29 01:18:44
'operator =' must be a member啥意思
#include
class String
{
public:
String(char *str=NULL);
friend void operator=(String&a,String&b);
void show();
private:
char *name;
};
int main()
{
return 0;
}编译提示:error C2801:'operator =' must be a member
#include
class String
{
public:
String(char *str=NULL);
friend void operator=(String&a,String&b);
void show();
private:
char *name;
};
int main()
{
return 0;
}编译提示:error C2801:'operator =' must be a member
=操作符重载函数不能为友元函数,只能为某类中的成员函数.
假如将赋值运算符重载为Dog类的友元:
friend Dog operator=( Dog &d1,Dog &d2)
{
d1.age = d2.age;
return d1;
}
例如有表达式 x = y;可以正确的将y赋值给x; x,y都是Dog类的对象.
又例如有一表达式99 = y;它被解释为operator=(99,y);
C++编译器将99转换为一个Dog类的对象(隐含的临时变量),然后使形参引用对象,因此这是个正确的表达式.但按C++的规定(99=y常量怎能赋值),这样的表达式应是错误的,为了保证与C++规定的赋值语义相一致,应将赋值运算符重载为类运算符.
同样,也应将+=,-=等这些赋值运算符重载为类运算符!
假如将赋值运算符重载为Dog类的友元:
friend Dog operator=( Dog &d1,Dog &d2)
{
d1.age = d2.age;
return d1;
}
例如有表达式 x = y;可以正确的将y赋值给x; x,y都是Dog类的对象.
又例如有一表达式99 = y;它被解释为operator=(99,y);
C++编译器将99转换为一个Dog类的对象(隐含的临时变量),然后使形参引用对象,因此这是个正确的表达式.但按C++的规定(99=y常量怎能赋值),这样的表达式应是错误的,为了保证与C++规定的赋值语义相一致,应将赋值运算符重载为类运算符.
同样,也应将+=,-=等这些赋值运算符重载为类运算符!
'operator =' must be a member啥意思
A covert front-line operator.啥意思?
You must be a member to upload photos.
英语翻译You must be a member for at least 3 days until 9/1/2007
must be myself啥意思?
become a member和be a member的区别
a League member什么意思?
I'm lucky to be a member of my family.意思是什么
whether i can be a member yours?
you must be 意思
member意思
a productive member of society什么意思