C++学习笔记——多态

运算符重载

重载为类成员的运算符定义形式

函数类型 oprator 运算符(形参)
{
    ...
}
//参数个数=原操作数个数-1 (后置++、--除外)

双目运算符重载规则

  • 如果要重载B为类成员函数,使之能够实现表达式oprd1 B oprd2,其中oprd1为A类对象,则B应被重载为A类的成员函数,形参类型应该是oprd2所属的类型。
  • 经重载后,表达式oprd1 B oprd2相当于oprd1.oprator B(oprd2)

前置单目运算符重载规则

  • 如果要重载U为类成员函数,使之能够实现表达式U oprd,其中oprd为A类对象,则U应被重载为A类的成员函数,无形参。
  • 经虫子啊后,表达式U oprd相当于oprd.operator U()

后置单目运算符++和--重载规则

  • 如果要重载++和--为类成员函数,使之能够实现表达式oprd++或oprd--,其中oprd为A类对象,则++或————应被重载为A类的成员函数,且具有一个int类型形参。
  • 经重载后,表达式oprd++相当于oprd.operator ++(0)

运算符重载为非成员函数的规则

  • 函数的形参代表依自左向右次序排列的各操作数。
  • 重载为非成员函数时
    • 参数个数=原操作数个数(后置++、--除外)
    • 至少有一个自定义类型的参数。
  • 后置单目运算符++和--的重载函数,形参列表中要增加一个int,但不必写形参名。
  • 如果在运算符的重载函数中需要操作某类对象的私有成员,可以将此函数声明为该类的友元。
  • 双目运算符B重载后,表达式oprd1 B oprd2等同于operator B(oprd1,oprd2)
  • 前置单目运算符B重载后,表达式B oprd等同于operator B(oprd)
  • 后置单目运算符++和--重载后,表达式oprd B等同于operator B(oprd,0)

猜你喜欢

转载自blog.csdn.net/LKZYnih/article/details/81637610