面向对象
面向对象
封装,继承和多态
多态
- 覆盖(也叫重写)(override): 是指子类重新定义父类的虚函数的做法,是在类中才有的概念
- 重载(overload): 是指允许存在多个同名函数,而这些函数的参数表不同(或许参数个数不同,或许参数 类型不同,或许两者都不同)不一定是在类中的
重写与重载的本质区别是,加入了override的修饰符的方法,此方法始终只有⼀个被你使用的方法
return by reference
| 场景 | 返回类型 | 原因 |
|---|---|---|
| 操作当前对象并希望支持链式调用 | 返回引用(Type&) |
提高性能,支持链式操作。 |
| 提供对内部成员的直接访问 | 返回引用(Type&) |
允许外界修改内部数据,避免拷贝开销。 |
| 计算新结果并返回 | 返回值(Type) |
返回一个新对象,不修改原始对象,符合语义要求。 |
后置 ++ 或 -- |
返回值(Type) |
符合“返回操作前的状态”的语义要求,需返回旧值副本。 |
| 局部变量或临时对象 | 返回值(Type) |
局部对象的生命周期短,不能返回局部对象的引用,否则将导致未定义行为(悬空引用) |