我在一个类里重载了赋值运算符,把它声明为类的友元, 编译出错:"operator ="必须是非静态成员。

2024-12-24 12:26:12
推荐回答(1个)
回答1:

c++中 有四个操作符不能是全局域中的重载,这四个操作符是:=, ->, operator[ ], operator()。
所以=的重载不能声明成类的友元。而且函数operator=默认是静态成员函数,所以只能访问静态数据成员
你没贴代码,我就举个例子吧:
class A {
public:
A &operator=(A &a); //ok 正确
friend A &operator=(const char *s); //错误,友元不属于成员函数
private:
int _size;
char *_string;
};