类型转换函数和友元函数

你要知道普通成员函数和友元函数都能实现操作符的重载,有的时候你声明的操作符重载函数的形参是两个对象,但是实参中有一个类型兼容类型变量,这个时候如果你的类中存在类型转换函数,它就可能把原来是对象的那个实参通过类型转换函数转换成类型兼容类型,那么这就不是两个对象在运算了,这也就偏离了你的初衷。

当你使用一个成员函数版的操作符重载函数时,原本的调用者应该是该类的对象,但实际上调用者是一个类型兼容类型的变量,它显然不能成为成员重载函数的调用者,于是调用失败了。而一个友元函数却不会出现此状况,并且友元函数在接受实参时会使用构造函数将一个类型兼容类型转换为类类型。

你可能感兴趣的:(类型转换函数和友元函数)