为什么赋值运算符不能写成友元函数,只能写成成员函数呢?

img

  1. 当一个类没有默认构造函数(default constructor)、析构函数、拷贝构造函数、赋值操作符函数,(这些函数都属于成员函数)编译器会自动声明一个
  2. 友元函数不算成员函数,只是可以访问类里的成员
  3. 结合上面两点,当你通过友元函数重载了一个赋值函数,编译器会发生冲突(不知道调用哪一个函数),所以会报错
  4. 小建议(不重要,可忽略):运算符重载考虑到可以连续赋值情况,一般返回值推荐返回这个类的引用