武汉理工大学c++期末复习资料.docVIP

  • 94
  • 0
  • 约2.34万字
  • 约 26页
  • 2017-02-28 发布于重庆
  • 举报
武汉理工大学c期末复习资料

C++期末 基本概念 面向对象编程的三大特征 1) 封装 2) 继承  3) 多态 虚函数、重载函数特点,有哪些约束 虚函数是动态多态,重载函数是静态多态。 重载函数之间要求函数返回值、函数名一致,但是参数不一致。 虚函数要求函数返回值、函数名、参数都一致。 纯虚函数作用?派生关系?如何实现? ?一、定义 ? 纯虚函数是在基类中声明的虚函数,它在基类中没有定义,但要求任何派生类都要定义自己的实现方法。在基类中实现纯虚函数的方法是在函数原型后加“=0”? ? virtual void funtion()=0? 二、引入原因 ?? 1、为了方便使用多态特性,我们常常需要在基类中定义虚拟函数。? ?? 2、在很多情况下,基类本身生成对象是不合情理的。例如,动物作为一个基类可以派生出老虎、孔雀等子类,但动物本身生成对象明显不合常理。? ? 为了解决上述问题,引入了纯虚函数的概念,将函数定义为纯虚函数(方法:virtual ReturnType Function()= 0;),则编译器要求在派生类中必须予以重写以实现多态性。同时含有纯虚拟函数的类称为抽象类,它不能生成对象。这样就很好地解决了上述两个问题。 三、相似概念 ?? 1、多态性? ? 指相同对象收到不同消息或不同对象收到相同消息时产生不同的实现动作。C++支持两种多态性:编译时多态性,运行时多态性。? ? a、编译时多态性:通过重载函数实现? ? b、运行时多态性:通过虚函数实现。? ? 2、虚函数? ? 虚函数是在基类中被声明为virtual,并在派生类中重新定义的成员函数,可实现成员函数的动态覆盖(Override) ? 3、抽象类? ? 包含纯虚函数的类称为抽象类。由于抽象类包含了没有定义的纯虚函数,所以不能定义抽象类的对象。 派生类访问基类成员有哪些访问控制?对象呢? 区分“派生类对象”和“派生类”对基类成员的访问权限。? ??“派生类对象”对基类成员的访问权限:? ???(1)对于公有继承,只有基类的公有成员可以被“派生类对象”访问,其他(保护和私有)成员不能被访问。? ???(2)对于私有继承和保护继承,基类中所有成员都不能被“派生类对象”访问。? ??“派生类”对基类中成员的访问权限:? ??(1)对于公有继承,基类中的公有成员和保护成员可以被“派生类”访问,而基类中的私有成员不能被访问。? ??(2)对私有继承和保护继承,也是基类中的公有成员和保护成员可以被“派生类”访问,而基类中的私有成员不能被访问。 多态性如何实现? ??、多态性? ? 指相同对象收到不同消息或不同对象收到相同消息时产生不同的实现动作。C++支持两种多态性:编译时多态性,运行时多态性。? ? a、编译时多态性:通过重载函数实现? ? b、运行时多态性:通过虚函数实现。? 类和对象关系? 每一个实体都是对象。有一些对象是具有相同的结构和特性的。每个对象都属于一个特定的类型,这个特定的类型称为类(class )。 类代表了某一批对象的共性和特征。前面已说明:类是对象的模板,而对象是类的具体实例(instance)。 正如同结构体类型和结构体变量的关系一样,需要先声明一个结构体类型,然后用它去定义结构体变量。同一个结构体类型可以定义出多个不同的结构体变量。 在C++中也是先声明一个类类型,然后用它去定义若干个同类型的对象。对象就是类类型的一个变量。可以说类是对象的模板,是用来定义对象的一种抽象类型。 类是抽象的,不占用内存,而对象是具体的,占用存储空间。 深拷贝、浅拷贝区别? 1. 深拷贝是指源对象与拷贝对象互相独立,其中任何一个对象的改动都不会对另外一个对象造成影响。举个例子,一个人名叫张三,后来用他克隆(假设法律允许)了另外一个人,叫李四,不管是张三缺胳膊少腿还是李四缺胳膊少腿都不会影响另外一个人。比较典型的就是Value(值)对象,如预定义类型Int32,Double,以及结构(struct),枚举(Enum)等。? 2. 浅拷贝是指源对象与拷贝对象共用一份实体,仅仅是引用的变量不同(名称不同)。对其中任何一个对象的改动都会影响另外一个对象。举个例子,一个人一开始叫张三,后来改名叫李四了,可是还是同一个人,不管是张三缺胳膊少腿还是李四缺胳膊少腿,都是这个人倒霉。比较典型的就有Reference(引用)对象,如Class(类)。 深拷贝和浅拷贝的区别是在对象状态中包含其它对象的引用的时候,当拷贝一个对象时,如果需要拷贝这个对象引用的对象,则是深拷贝,否则是浅拷贝。 抽象类作用? ?将不用来定义对象而只作为一种基本类型用作继承的类,称为抽象类(abstract class),由于它常用作基类,通常称为抽象基类。凡是包含纯虚函数的类都是抽象类。 ??? 如果在派生类中没有对所有的

文档评论(0)

1亿VIP精品文档

相关文档