为什么重载赋值运算符只能重载为成员函数,而不能是友元函数?
我查到这与编译器会自动生成一个赋值运算符的重载有关,对此我有三个疑问,
1.这个自动生成的重载赋值运算符是无论我自己写不写重载运算符都会存在的吗?
2.这个编译器生成的赋值运算符是成员函数吗?
3.我查到一个答案说:“如果把自己定义赋值运算符的写成友元的话,函数的参数列表不一样,不会发生重载;所以编译器禁止了这种行为。”我对于这里说的不会发生重载产生了疑惑,参数不一样不才可以构成重载吗?这里是说因为定义为友元不算做重载吗?是否为友元足以让编译器区分两个函数吗?
应该是说反了,因为参数一样,所以没法重载
比如你写一个类A,然后重载赋值运算符,如果给A赋值一个int,那么其实将值赋值给A.a这个属性
那你如果再写一个类B,同样赋值一个int,要赋值给B.b这个属性
那这个函数在类里面没有任何问题
但是这个函数如果是在类外面就有大问题了