小菜,重载运算符函数的疑惑

小菜求救,重载运算符函数的疑惑
为什么运算符函数operatar=必须重载为成员函数而不能是友元函数?
*=却可以啊.
运算符函数operatar=为什么返回值不能是void而++.*=就可以呢?


这=真特殊啊= =,
不能被继承这个还能理解

------解决方案--------------------
个人理解

c++的类的构造函数、拷贝构造函数、拷贝赋值操作符和析构函数是特殊成员函数,=就是这么特殊

如果类内不定义=运算就会默认生成一个浅拷贝赋值的函数,再在类外尝试重载就不行了