文章目录
1.c++面向对象三大特性
- 面向对象:对象是指具体的某一个事物,这些事物的抽象就是类,类中包含数据(成员变量)和动作(成员方法)。
- 面向对象的三大特性:
- 封装:将具体的实现过程和数据封装成一个函数,只能通过接口进行访问,降低耦合性。
- 继承:让某种类型对象获得另⼀个类型对象的属性和⽅法。
- 多态:多态就是不同继承类的对象,对同一消息做出不同的响应,基类的指针指向或绑定到派生类的对象,使得基类指针呈现不同的表现方式。
- 实现多态有两种⽅式
覆盖(override): 是指⼦类重新定义⽗类的虚函数的做法
重载(overload): 是指允许存在多个同名函数,⽽这些函数的参数表不同(或许参数个数不同,或许参数类型不同,或许两者都不同)
- 实现多态有两种⽅式
2.c++的三个访问修饰符
public 、 private 和 protected 。
这些修饰符决定了类中的成员对外部代码的可⻅和访问权限
- public 修饰符⽤于指定类中的成员可以被类的外部代码访问。公有成员可以被类外部的任何代码(包括类的实例)访问。
- private 修饰符⽤于指定类中的成员只能被类的内部代码访问。私有成员对外部代码是不可⻅的,只有类内部的成员函数可以访问私有成员。
- protected 修饰符⽤于指定类中的成员可以被类的派⽣类访问。受保护成员对外部代码是不可⻅的,但可以在派⽣类中被访问。
3.多重继承
⼀个类可以从多个基类(⽗类)继承属性和⾏为。
在C++等⽀持多重继承的语⾔中,
⼀个派⽣类可以同时拥有多个基类。
多重继承可能引⼊⼀些问题,如菱形继承问题, ⽐如当⼀个类同时继承了两个拥有相同基类的类,⽽最终的派⽣类⼜同时继承了这两个类时, 可能导致⼆义性和代码设计上的复杂性。为了解决这些问题,C++ 提供了虚继承, 通过在继承声明中使⽤ virtual 关键字,可以避免在派⽣类中⽣成多个基类的实例,从⽽解决了菱形继承带来的⼆义性。
4.重载与重写
-
重载:重载是指在同⼀作⽤域内,使⽤相同的函数名但具有不同的参数列表或类型,使得同⼀个函数名可以有多个版本。
-
重写:重写是指派⽣类(⼦类)重新实现(覆盖)基类(⽗类)