C++ 基础知识(1)--类

来源:互联网 发布:视频会议软件破解版 编辑:程序博客网 时间:2024/06/11 13:38

C++ 基础知识(1)–类

我们通过类来定义自己的数据结构,通过定义新的类型来反映待解决问题中的各种概念,可以使我们更容易编写、调试和修改程序。

类的基本思想是数据抽象封装

1.基本概念

  • 数据类型(date type):一个值的集合和定义在这个集合上的一组操作的总称。(eg:整型,长整型,浮点型)
  • 面向对象(Object Oriented Programming):面向对象是一种程序设计的思想,就是在程序空间内,利用数据抽象的方法对客观世界的实体进行描述,也就是将数据和对数据的操作组成一个整体。

在传统的面向对象编程中,数据以及数据相关的操作函数都是分离的独立个体 ,OOP提供了设计对象的功能,对象包括特征和行为,两者都囊括在一起,共同构成对象实体。

面向对象与面向过程的区别:面向过程是一种以过程为中心的编程思想,以算法进行驱动(面向过程:程序=算法+数据)。面向对象是一种以对象为中心的编程思想,以消息进行驱动(面向对象:程序=对象+消息)。

万物皆对象,就编程角度来看,对象包括a. 一系列属性(数据),b. 一系列操作(函数);

对象实体,使程序更模块化,更容易读写 ,提升了代码重用 到一个更高的层次。

目的不同,抽象出来的信息不同。

对象是具体的事物,类是从对象抽象出来的,抽象类不可实例化。比如 动物类。

  • 抽象数据类型(ADT:Abstract Data Type): a.由用户定义,用以表示应用问题的数据模型。b.由基本的数据类型组成,并包含一组相关的操作。c.信息隐藏和数据封装,使用与实现相分离。

ADT的重要特征:

(1)数据抽象 :用ADT描述程序处理实体时,强调的是其本质的特征、其所能完成的功能以及它和外部用户的接口。

(2)数据封装 :将实体的外部特征和其内部实现细节分离,并且对外部用户隐藏其内部实现细节。

  • 封装(encapsulation) :封装的思想就是将实现的细节隐藏,而暴露公有接口。

在C++中通过访问标识符,可以实现在类中的封装。

封装的特点:

(1)无论对类的实现如何变化,只要对外的接口不发生变化即可。这样的话使用该接口的用户就无需改变。

(2)实现类的隐藏,类的使用者只需要知道公共的接口,就能使用该类。

(3)确保用户代码不会无意间破坏封装对象的状态。

2.类和结构体

  • 在C++中,类和结构体的区别就是,结构体默认访问权限是public,而类是private。
  • 结构体的执行效率相对较高,没有析构,不可继承。一般来说结构体用来处理较少的基础数据,而类用来处理复杂的逻辑。

3.面向对象的三个特征

  • 封装: 将客观事物封装上抽象的类。
  • 继承: 它可以使用现有类的所有功能,并在无需重新编写原来类的情况下对这些功能进行扩展。

1.通过继承创建的新类称为”子类” 或 “派生类”;

2.被继承的类称为“基类”,”父类” 或 “超类”;

3.继承的过程就是,从一般到特殊。

4.继承概念实现的方式有三类:实现继承,接口继承,可视继承。

  • 实现继承:使用基类的属性和方法而无需额外的编码能力。
  • 接口继承:仅使用属性和方法的名称,子类必须提供方法的实现。
  • 可视继承:子窗体(类)使用基窗体(类)的外观和实现代码。
  • 多态: 允许将子类类型的指针赋值给父类类型的指针。赋值后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。

多态是对行为的一种封装,一个接口,多种实现。也就是同一种事物所表现出的多种形态,对不同类发出相同的消息,将会有不同的行为。

多态的主要作用:

  • 应用程序不必为每一个派生类编写功能调用,而只需要对抽象基类进行处理即可。这样就大大提高了程序的可复用性,精简了代码的编写量。
  • 派生类的功能可以被基类的方法或引用变量所调用,这称为向后兼容,可以在很大程度上提高可扩充性和可维护性。

多态的实现: 覆盖和重载。

  • 覆盖:是指子类重新定义父类的虚函数的做法。
  • 重载:是指允许存在多个同名函数,而这些函数的参数列表不同(参数个数,类型)。

分析:重载 是指在同一个类中相同的返回类型和方法名,但参数个数和类型可以不同。覆盖 是在不同的类中。

重载的概念并不属于”面向对象编程“,重载的实现是:编译器更具函数不同的参数表,对同名函数的名称坐修饰,(对编译器来说)然后这些同名函数就成了不同的函数。这样的话,对函数的调用在编译期间就已经确定了,是静态的。所以重载和多态无关,它只是一种语言的特性。

对覆盖而言,当子类重新定义了父类的虚函数后,父类指针根据赋给它的不同的子类指针。动态的调用数据子类的该函数,是在运行期间确定的,属于晚绑定。

1 0
原创粉丝点击