4运算符重载.pptVIP

  • 12
  • 0
  • 约2.15万字
  • 约 64页
  • 2017-06-17 发布于湖北
  • 举报
4运算符重载概要

如果程序中定义了从一种类型到其他多种类型的自动转换方法,那么在实际需要进行类型转换时也可能导致二义性。 class Y{ }; class Z{ }; class X { public: operator Y() const; // X到Y的转换 operator Z() const; // X到Z的转换 }; void f(Y) {} void f(Z) {} int main() { X a; f(a); // Error: 二义性 } 因此应该在确保不引起二义性,并能够优化代码的情况下谨慎使用自动类型转换。要避免上面的二义性问题,最好的办法是保证最多只有一种途径将一个类型转换为另一类型。 另外还有一些特殊运算符的重载,如operator,、operator-、operator-*、operator new及operator delete等,由于这些运算符的重载较少用到,并且使用不当容易造成混淆,因此不再介绍。 6 小结 运算符重载可以像基本数据类型一样,用简洁明确的运算符操作自定义的类对象。 重载运算符函数可以对运算符作出新的解释,但重原有的基本语义不变。 运算符函数既可以重载为成员函数,也可以重载义为友元函数或普通函数。 当单目运算符的操作数,或者双目运算符的左操作数是该类的一个对象时,以成员函数重载;当一个运算符的操作需要修改类对象状态时,应该以成员

文档评论(0)

1亿VIP精品文档

相关文档