
**数据结构**是存储具有复杂关系的数据更有助于后期对数据的再利用。 主要学习数据存储方式。 **过程式编程**是一种以执行程序 *** 作的过程或函数为中心编写软件的方法。 程序的数据通常存储在变量中,与这些过程是分开的。 所以必须将变量传递给需要使用它们的函数。比如C语言。 **面向对象OOP** 以创建和使用对象为中心。 一个对象(Object)就是一个软件实体,它将数据和程序在一个单元中组合起来。 对象的数据项,也称为其属性,存储在成员变量中。 对象执行的过程被称为其成员函数。 将对象的数据和过程绑定在一起则被称为封装。
下面介绍面向对象编程的多个概念:类 & 对象、继承、重载、多态、数据抽象、数据封装、接口(抽象类)。
二、类 & 对象参考链接
如果不显式声明访问权限,那么默认成员都是私有的。
此部分就是类的继承。
参考链接
参考链接
C++ 允许在同一作用域中的某个函数和运算符指定多个定义,分别称为函数重载和运算符重载。
重载声明是指一个与之前已经在该作用域内声明过的函数或方法具有相同名称的声明,但是它们的参数列表和定义(实现)不相同。 调用一个重载函数或重载运算符时,编译器通过把您所使用的参数类型与定义中的参数类型进行比较,决定选用最合适的定义。 选择最合适的重载函数或重载运算符的过程,称为重载决策。
-
概念
多态的定义简单来说就是使一条语句有多种状态。
当类之间存在层次结构,并且类之间是通过继承关联时,就会用到多态。
C++ 多态意味着调用成员函数时,会根据调用函数的对象的类型来执行不同的函数。
多态包括两种:
一种是静态多态,或称静态链接、编译时的多态,又称早绑定;
二是动态链接,或后期绑定、运行时的多态。
动态链接必须用到虚函数。 虚函数:是在基类中使用关键字 virtual 声明的函数。 在派生类中重新定义(必须定义否则编译不通过)基类中定义的虚函数时,会告诉编译器不要静态链接到该函数。 纯虚函数: 您可能想要在基类中定义虚函数,以便在派生类中重新定义该函数更好地适用于对象,但是您在基类中又不能对虚函数给出有意义的实现,这个时候就会用到纯虚函数。纯虚函数是通过在声明中使用 "= 0" 来指定的。
- 示例
纯虚函数示例:
class Box
{
public:
// 纯虚函数
virtual double getVolume() = 0;
private:
double length; // 长度
double breadth; // 宽度
double height; // 高度
};
- 静态链接示例:
利用基类指针存放子类对象
#includeusing namespace std; class Shape { protected: int width, height; public: Shape( int a=0, int b=0) { width = a; height = b; } int area() { cout << "Parent class area :" < area(); // 存储三角形的地址 shape = &tri; // 调用三角形的求面积函数 area shape->area(); return 0; }
输出结果:
Parent class area : Parent class area :
- 动态链接示例
将上面静态链接的示例中基类做如下修改:
class Shape {
protected:
int width, height;
public:
Shape( int a=0, int b=0)
{
width = a;
height = b;
}
virtual int area()
{
cout << "Parent class area :" <
输出结果:
Rectangle class area :
Triangle class area :
六、数据抽象
参考链接
数据抽象是指,只向外界提供关键信息,并隐藏(访问权限修饰符)其后台的实现细节,即只表现必要的信息而不呈现细节。
七、数据封装
参考链接
封装是面向对象编程中的把数据和 *** 作数据的函数绑定在一起的一个概念,这样能避免受到外界的干扰和误用,从而确保了安全。数据封装引申出了另一个重要的 OOP 概念,即数据隐藏(访问权限修饰符)。
八、接口(抽象类)
接口描述了类的行为和功能,而不需要完成类的特定实现。
C++ 接口是使用抽象类来实现的,抽象类与数据抽象互不混淆,
数据抽象是一个把实现细节与相关的数据分离开的概念。
如果类中至少有一个函数被声明为纯虚函数,则这个类就是抽象类。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)