'operator =' must be a <Unknown> member啥意思
来源:百度知道 编辑:UC知道 时间:2024/06/01 04:00:33
#include<iostream.h>
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 <Unknown> member
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 <Unknown> 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++规定的赋值语义相一致,应将赋值运算符重载为类运算符。
同样,也应将+=,-=等这些赋值运算符重载为类运算符!
Imagine that you have overloaded operator* and operator= for class
重载'='时报错:error C2801: 'operator =' must be a <Unknown> member是怎么回事?
c++起步问题 A& operator=(A &p);
为什么C++操作符<<重载老是提示:operator <<' is ambiguous
I'm getting a busy signal when I dial the operator.
C++ 写了复制构造函数是不是不用重载operator =
Smooth operator 的中文歌词
MLB Operator是什么
OperaTor浏览器怎么用
smooth operator 歌词中文翻译