运算符重载作为 类的成员函数 和 类外函数 的区别

运算符重载在类的内外,取决于操作数所处的位置

下面这种情况可重载 operator+ 为成员函数或者类外的函数:

c = c + 1.2; // 等价 c = c.operator+(1.2) 或者 c = operator+(c, 1.2);

 

这种情况就只能重载为类外的函数:

c = 1.2 + c; // 等价 c = operator+(1.2, c);

 小trick: 使用友元,直接调用类内已经写好的 operator+

 

!注:运算符重载在类外,一般要声明为类的友元,因为有可能牵扯到访问类的私有成员。

 

posted @ 2021-04-06 13:36  HarryPotterIsDead!  阅读(417)  评论(0编辑  收藏  举报