C++ 基础概念知识补充

C++实现面向对象的三个基本工具是:封装、继承、多态。

  • 封装:隐藏实现细节,仅对外提供接口,即实现了代码模块化;
  • 继承:扩展已存在的代码模块(类),即实现了代码重用。
  • 多态:具体表现为一个接口,多种方法,即实现了接口重用!

继承

一个对象直接使用另一个对象的属性和方法。
优点:

  1. 减少重复的代码。
  2. 继承是多态的前提。
  3. 继承增加了类的耦合性。

缺点:

  1. 继承在编译时刻就定义了,无法在运行时刻改变父类继承的实现;
  2. 父类通常至少定义了子类的部分行为,父类的改变都可能影响子类的行为;
  3. 如果继承下来的子类不适合解决新问题,父类必须重写或替换,那么这种依赖关系就限制了灵活性,最终限制了复用性。

多态

多态性可以简单地概括为“一个接口,多种方法”,程序在运行时才决定调用的函数,它是面向对象编程领域的核心概念。当多态应用形参类型的时候,可以接受更多的类型。当多态用于返回值类型的时候,可以返回更多类型的数据。多态可以让你的代码拥有更好的扩展性。

多态分两种分别为静态多态和动态多态:

  • 静态多态(编译期多态):静态多态大多使用重载、模板和宏,因为是在编译期决议确定,所以称为静态多态。
  • 动态多态(运行期多态):动态多态就是通过继承重写基类的虚函数实现的多态,因为是在运行时决议确定,所以称为动态多态。

重载 & 重写 & 重定义的概念

重载 overload(同域,同名,参数不同,返回值任意)

  1. 函数名相同,参数列表不同。
  2. 重载只是在类的内部,或者说在同一作用域存在。
  3. 但是不能靠返回类型来判断。重载虽然函数名一样,但是对于编译器来说其实是不同的函数,重载包括传入参数个数不同,类型不同等,不能通过返回值不同来判断。

重写 override(不同域,同名,参数相同,返回值相同)派生类函数覆盖同名基类函数

  1. 被重写的函数不能是static的。必须是virtual的
  2. 重写函数必须有相同的类型,名称和参数列表
  3. 重写函数的访问修饰符可以不同。尽管virtual是private的,派生类中重写改写为public,protected也是可以的

重定义 (redefining) (不同域,同名,参数&返回值任意)派生类函数隐藏同名基类函数

  1. 子类重新定义父类中有相同名称的非虚函数
  2. 参数列表和返回类型可以不同

封装

隐藏对象的属性和实现细节,仅仅对外提供接口和方法。
优点: 1)隔离变化;2)便于使用; 3)提高重用性; 4)提高安全性
缺点: 1)如果封装太多,影响效率; 2)使用者不能知道代码具体实现。

猜你喜欢

转载自blog.csdn.net/Flame_alone/article/details/107781004