c++问题,求解答
一.建立一个复数类imaginary,其私有数据成员x和y表示复数的实部和虚部,构造函数imaginary用于对复数的实部和虚部初始化,成员函数show用于显示复述对象,形式为“实部+虚部i”;友员函数add,sub,mul和div分别用于进行复数的加、减、乘和除法运算。在主函数中,实例化两个复数,并输入一个运算符,按运算符选择相应的友员函数进行复数运算,然后调用成员函数show输出计算结果。编码实现上述要求并回答以下问题
(1) 四个友员函数的形参和返回值分别是什么?
(2)四个友员函数可以定义为相应的成员函数吗,写出原型
(3)比较友员函数与成员函数的用法
二、建立一个建筑物类的层次体系。其中building包括保护数据成员name(建筑物名称)、floors(层数)和areas(总面积),由building类派生住宅类house和办公楼类office;住宅类house包括私有数据成员rooms(房间数)和balcony(阳台数);办公楼类office包括私有数据成员offices(办公室数)和meetingrooms(会议室数)。住宅类house和办公楼类office都含有构选函数和print函数,以分别用于对数据成员的初始化和输出。在主函数中,实例化house类和office类对象并且将其数据输出。
编码实现上述要求并回答以下问题
(1) building类中的成员name、floors和areas为什么定义为保护成员,可以定义为私有成员吗?
(2) 通过你的程序输出说明类层次中构造函数的特点及执行次序。
(3) 通过你的程序输出说明类层次中析构函数的特点及执行次序。
三、设计一个计算图形面积的类库。它的顶层是一个抽象类,并且提供了三个纯虚函数:显示数据成员。返回面积、返回体积。
class Shape{
virtual void showDate()=0;
virtual double reArea()=0;
virtual double reVolume()=0;
};
第二层由Shape类派生TwoDimShape(二维图形)、ThreeShape(三维图形)类、他们增加了有关的数据成员,但没有成员函数的实现。第三层派生具体的图形类。TwoDimShape类派生Circle、Ellipse、Rectangle、Triangle等类。ThreeShape类派生Ball、Cylinder(圆柱体)、RectangularParallelepiped(长方体)等类。
在主函数测试中使用多态方式调用不同对象的求值函数。
编码实现上述要求并回答以下问题
(1) 程序中如何体现多态性
(2) 如果顶层类中的函数不定义为虚函数,执行程序会什么结果,为什么?
(3) 是否需要定义了虚析构函数,虚析构函数有什么作用?