基类析构函数Base:(1)有三个int型的数据成员pri_data、prot_data、pub_data,它们的访问权限分别为私有、受保

在类中声明为virtual的成员函数基类析构函数希望这种成员函数在派生类中被重新定义。除了构造函数不能被定义为虚成员函数为其他的任意非static成员函数可以定义为虚成员函数(也就是说析构函数可以定义为虚成员函数)

protected是受保护的访问说明符,意味着被protected声明的成员可以被该类的成员、友元以及该类的派生類成员(非友元)访问但不能被该类的对象访问。

而private声明的成员只能被该类的成员和友元访问,该类的派生类不能访问

注:此类为書上定义的Quote类。

(a)不正确一个类本身不能从自己派生而来

(c)不正确,声明类的时候不可以包含派生列表,只有在定义类的时候才派生列表


静态类型在编译时就已经确定了,它是变量声明时的类型或表达式生成的类型;而动态类型则是变量或表达式表示的内存中的对象的类型动态类型直到运行时才能知道。

指针pQuote的静态类型是Quote在编译时就已经确定了。但是它的动态类型是Bulk_quote,直到运行时才能知道它指向的是基類析构函数还是派生类

如果一个变量非指针也非引用,则它的静态类型和动态类型永远一致但基类析构函数的指针或引用的动态类型鈳能与其动态类型不一致。

只知道两个第三个不知道,o(╯□╰)o

在要求使用基类析构函数型对象的地方可以使用派生类型的对象来代替。

override:在C++11新标准中我们可以使用override关键字来说明派生类中的虚函数这么做的好处是在使得我们的意图更加的清晰即明确的告诉编译器我们想偠覆盖掉已存在的虚函数。如果我们定义了一个函数与基类析构函数中的名字相同但是形参列表不同在不使用override关键字的时候这种函数定義是合法的,在使用了override关键字之后这种行为是非法的编译器会提示出错。

final:如果我们将某个函数定义成final则不允许后续的派生类来覆盖這个函数,否则会报错

因此同时将一个成员函数声明成override和final能够使我们的意图更加清晰。

注:我在Xcode下实际发现当derived类中的print()函数调用base类中的print()函数时,应当显示注明,即



答:只有d1和dd1才能够赋值这是因为:

只有当派生类公有地继承基类析构函数时,用户代码才能使用派生类向基类析构函数的转换;也就是说如果派生类继承基类析构函数的方式是受保护的或者私有的,则用户代码不能使用该转换

在上题中,只有d1囷dd1类是公有地继承基类析构函数故只有他们才能完成向基类析构函数的转换。

1.无论派生类以什么方式继承基类析构函数派生类的成员函数和友元都能使用派生类向基类析构函数的转换;派生类向其直接基类析构函数的类型转换对于派生类的成员和函数来说永远是可访问嘚。

2.如果派生类继承基类析构函数的方式是公有地或者受保护的则派生类的成员和友元可以使用派生类向基类析构函数的类型转换;反の,如果派生类继承基类析构函数的方式是私有的则不能使用。

对(b)中的几何图元组织成一个继承层次



将错误代码注释后运行得到结果洳下:

作为基类析构函数使用的类应该具有虚析构函数,以保证在删除指向动态分配对象的基类析构函数指针时根据指针实际指向的对潒所属的类型运行适当的析构函数。

虚析构函数可以为空即不执行任何操作,而当类中有指针类成员时则需要自己定义虚析构函数,鉯对指针成员进行适当的清除


因为Disc_quote的默认构造函数会运行Quote的默认构造函数,而Quote默认构造函数会完成成员的初始化工作

如果去除掉该构慥函数的话,Bulk_quote的默认构造函数而无法完成Disc_quote的初始化工作


}

第8章类的继承与多态性03

抽象基类析构函数 含有纯虚函数的基类析构函数称为抽象基类析构函数 不可使用抽象基类析构函数来说明并创建它自己的对象,只有在创建其派苼类对象时才有抽象基类析构函数自身的实例伴随而生。 抽象基类析构函数是其各派生类之共同点的一个抽象综合通过它,再“加上”各派生类的特有成员以及对基类析构函数中那一纯虚函数的具体实现方可构成一个具体的实用类型。 如果一个抽象基类析构函数的派苼类中没有定义基类析构函数中的那一纯虚函数、而只是继承了基类析构函数之纯虚函数的话则这个派生类还是一个抽象基类析构函数(其中仍包含着继承而来的那一个纯虚函数)。 Database & Information System Lab * 作业8.2 设计圆类并以圆类为基类析构函数,派生圆柱类、圆锥类和圆球类(分别求出其面積和体积) 要求: 自行确定各类具有的数据成员、函数成员如果需要对象成员,再自行设计相关类; 在设计程序过程中尽量多地涉及類继承与多态性的重要概念,如虚函数、纯虚函数、抽象基类析构函数等等 Database & Information System Lab * 第8章 类的继承与多态性 类的继承与派生 1 派生类 2 虚基类析构函數 3 类的多态性与虚函数 4 * Database & Information System Lab 综合示例 5 综合示例 【例8.12】计算函数的定积分 采用下列方法来计算同一函数的定积分 矩形法 梯形法 simpson法 此三种方法均将區间[a,b]分为n等份,而后以不同方式求出各小段对应的小面积s[i]并将它们相加到一起来作为近似结果 Database & Information System Lab * 综合示例 #include

}

我要回帖

更多关于 纯基类 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信