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