重载、重写、隐藏
参考资料
总结
重载
- 发生在同一个作用域中
- 函数名字相同,但是参数列表不同
- 函数返回值不参与
- 依赖于name mangling - g++
- std空间使用
St - 其余空间使用
名字长度+名字 - +函数名
- +参数列表类型首字母
- std空间使用
重写
- 派生类重写基类虚方法【只识记这一种情况】
- 返回值相同
- 函数名相同
- 参数列表相同
- 基类方法中必须含有
virtual关键字- 基类的析构函数最好(必须)定义为虚函数
- 默认析构函数为非虚
- 是出于内存、运行时消耗考量
- 不要为不需要的特效付出代价
隐藏
- 发生在派生类和基类之间
- 只要函数名相同就会隐藏
- 子类对象不加作用域符号,直接调用父类中被隐藏的函数
- 编译报错
- 从对象-数据本身出发:
- 既然子类提供了同名的数据操作函数,那么它应该是想对子类本身的数据做个性化操作
- 因此将父类同名函数隐藏;
- 不然的话,如果子类中函数和父类中函数同名,且参数一致的话:
- 还需要编译器去判断究竟使用哪一个函数最好
- 这东西肯定是标准规定的
重载、重写、隐藏
http://example.com/2024/08/22/CPP/重载、重写、隐藏/