重载、重写、隐藏

参考资料

总结

重载

  • 发生在同一个作用域中
    • 函数名字相同,但是参数列表不同
    • 函数返回值不参与
  • 依赖于name mangling - g++
    • std空间使用St
    • 其余空间使用名字长度+名字
    • +函数名
    • +参数列表类型首字母

重写

  • 派生类重写基类虚方法【只识记这一种情况】
    • 返回值相同
    • 函数名相同
    • 参数列表相同
  • 基类方法中必须含有virtual关键字
    • 基类的析构函数最好(必须)定义为虚函数
    • 默认析构函数为非虚
      • 是出于内存、运行时消耗考量
      • 不要为不需要的特效付出代价

隐藏

  • 发生在派生类和基类之间
    • 只要函数名相同就会隐藏
    • 子类对象不加作用域符号,直接调用父类中被隐藏的函数
      • 编译报错
  • 对象-数据本身出发:
    • 既然子类提供了同名的数据操作函数,那么它应该是想对子类本身的数据做个性化操作
    • 因此将父类同名函数隐藏;
    • 不然的话,如果子类中函数和父类中函数同名,且参数一致的话:
      • 还需要编译器去判断究竟使用哪一个函数最好
    • 这东西肯定是标准规定的

重载、重写、隐藏
http://example.com/2024/08/22/CPP/重载、重写、隐藏/
作者
Cyokeo
发布于
2024年8月22日
许可协议