面向对象

面向对象

封装,继承和多态

多态

  1. 覆盖(也叫重写)(override): 是指子类重新定义父类的虚函数的做法,是在类中才有的概念
  2. 重载(overload): 是指允许存在多个同名函数,而这些函数的参数表不同(或许参数个数不同,或许参数 类型不同,或许两者都不同)不一定是在类中的

重写与重载的本质区别是,加入了override的修饰符的方法,此方法始终只有⼀个被你使用的方法

return by reference

场景 返回类型 原因
操作当前对象并希望支持链式调用 返回引用(Type& 提高性能,支持链式操作。
提供对内部成员的直接访问 返回引用(Type& 允许外界修改内部数据,避免拷贝开销。
计算新结果并返回 返回值(Type 返回一个新对象,不修改原始对象,符合语义要求。
后置 ++-- 返回值(Type 符合“返回操作前的状态”的语义要求,需返回旧值副本。
局部变量或临时对象 返回值(Type 局部对象的生命周期短,不能返回局部对象的引用,否则将导致未定义行为(悬空引用)