c++ 是面向对象的编程语言,相对于 c 具有封装、继承、多态的特点。
封装
定义: 封装就是将对象的属性和行为封装起来,形成一个有机的整体,其载体就是类。类通常对客户隐藏其实现细节,这就是封装的思想,
就比如我们使用一个库函数时,我们只需要知道它的作用就可以了,没必要去了解它的内部工作,
- 采用封装的思想保证了类内部数据结构的完整性,使用该类的用户不能轻易地直接操作此数据结构,只能执行类允许公开的数据,这也就避免了外部操作对内部数据的影响,提高了程序的可维护性和安全性。
继承
定义: 继承就是新类从已有类那里得到已有的特性。
- 继承可以使得子类具有父类的各种属性和方法,而不需要再次编写相同的代码。
- 在令子类继承父类的同时,可以重新定义某些属性,并重写某些方法,即覆盖父类的原有属性和方法,使其获得与父类不同的功能。
多态
定义: 可以简单概括为“一个接口,多种方法”,即用的是同一个接口,但是效果各不相同,多态有两种形式的多态,一种是静态多态,一种是动态多态。
静态多态
含义: 是在编译期就把函数链接起来,此时即可确定调用哪个函数或模板,静态多态是由模板、函数重载和宏实现的。
优点:
- 带来了泛型编程的概念,使得C++拥有泛型编程与STL这样的武器; 在编译期完成多态,提高运行期效率;
- 具有很强的适配性和松耦合性,(耦合性指的是两个功能模块之间的依赖关系)
缺点:
- 程序可读性降低,代码调试带来困难;
- 无法实现模板的分离编译,当工程很大时,编译时间不可小觑 ;
- 无法处理异质对象集合
1、函数重载
含义: c++ 允许定义名称相同的函数,条件是它们的参数列表(又称为特征标)不能相同。这种行为称为函数重载 。
- c++ 允许定义返回值和参数都不相同,但名称相同的函数。
- c++ 不允许定义名称和参数相同,但返回值不同的函数。否则,编译器会报错:
2、模版
定义: 函数模板是通用的函数描述,也就是说,它们使用泛型来定义函数,其中的泛型可用具体的类型(如int或double)替换。通过将类型作为参数传递给模板,可使编译器生成该类型的函数
3、宏多态
含义: 在宏多态中,是通过定义变量,编译时直接把变量替换,实现宏多态,一种初级形式的静态多态。