【其它】声明一个shape基类,有计算面积arae()成员函数,由此派生出正方形类(Square)、直角三角形类(Triangle)、圆类(Circle),它们都有arae()成员函数。利用虚函数编程计算正方形、直角三角形和圆的面积之和。

【其它】声明一个shape基类,有计算面积arae()成员函数,由此派生出正方形类(Square)、直角三角形类(Triangle)、圆类(Circle),它们都有arae()成员函数。利用虚函数编程计算正方形、直角三角形和圆的面积之和。


参考答案和解析
vp->showinfo (); vp=&truck;vp->showinfo (); vp=&boat;vp->showinfo (); return 0;}5.2定义一个shape抽象类,派生出Rectangle类和Circle类,计算各派生类对象的面积Area( )。 #include #include using namespace std; class Shape{public: virtual void Area()=0; }; class Rectangle:public Shape{ public: Rectangle(double w,double h){ width=w,height=h;}void Area(){coutclass Circle:public Shape{ public: Circle(double r){ radius=r; }void Area(){coutprotected: double radius; }; int main(){ Shape *sp;Rectangle re1(10,6); Circle cir1(4.0); sp=&re1; sp->Area (); sp=&cir1; sp->Area ();return 0;}

相关考题:

下列关于虚函数的说明中,正确的是 brA .从虚基类继承的函数都是虚函数 brB .虚函数不得是静态成员函数 brC .只能通过指针或引用调用虚函数 brD .抽象类中的成员函数都是虚函数 br

下列关于虚函数的描述中,正确的是A.虚函数是一个static类型的成员函数B.虚函数是一个非成员函数C.基类中采用virtual说明一个虚函数后,派生类中定义相同原型的函数时可不必加virtual说明D.派生类中的虚函数与基类中相同原型的虚函数具有不同的参数个数或类型

( 12 ) “ 图形 ” 类 Shape 中定义了纯虚函数 CalArea() ,“ 三角形 ” 类 Triangle 继承了类Shape ,请 将Triangle 类中的 CalArea 函数补充完整。class Shape{public:virtual int CalArea()=0;}class Triangle: public Shape{public:Triangle{int s, int h}: side(s),height(h) {}【 12 】 { return side*height/2 ; }private:int side;int height;};

下面关于虚函数的描述,错误的是A.在成员函数声明的前面加上virtual修饰,就可把该函数声明为虚函数B.基类中说明了虚函数后,派生类中对应的函数也必须说明为虚函数C.虚函数可以是另一个类的友元函数,但不能是静态成员函数D.基类中说明的纯虚函数在其任何派生类中都必须实现

抽象类指的是()A、没有任何成员的类B、只有成员函数没有数据成员的类C、有虚函数的类D、有纯虚函数的类

阅读以下说明和C++代码,填入(n)处。[说明]以下C++代码使用虚函数实现了同一基类shape派生出来的Class rectangle、Class triangle、Class circle实现了计算矩形、圆形面积的计算。仔细阅读以下代码,将(n)处语句补充完整。[代码5-1]include<iostream.h>define PI 3.14159class shape {//基类protected:(1);public:(2);(3);};[代码5-2]class rectangle: public shape {public:rectangle (int x2,int y2,int r2): (4) {};double area ( ) {return x*y; };};class circle: public shape {public:circle (int x3,int y3,int r3):(5){};double area ( ) {return r*r*PI; };};[代码5-3]void main ( ){rectangle r (10,20,0);circle c (0,0,30);shape (6);cout<<"长方形面积="<<s1->area ( ) <<endl;cout<<"圆形面积="<<s2->area ( ) <<endl;}[运行结果]长方形面积=200圆形面积=2827.43

使用VC6打开考生文件夹下的工程test3_3,此工程包含一个源程序文件test3_3.cpp,其中建立了普通的基类base用于存储边的信息,建立派生类triangle和square,用于存储三角形和正方形的信息。按要求完成下列操作,将类定义补充完整。(1)定义基类base的保护数据成员x和y用于记录边的长度,它们都是int型的数据。请在注释“//**1**”之后添加适当的语句。(2)完成基类base默认构造函数的定义,把数据成员x和y分别初始化为参数a和b的值,要求使用作用域符“::”。请在注释“//**2**”之后添加适当的语句。(3)完成派生类triangle函数disp的定义,使其以“三角形面积:”的格式将三角形的面积输出到屏幕上。请在注释“//**3**”之后添加适当的语句。(4)添写派生类square的默认构造函数的定义,使其调用基类的构造函数,记录下正方形的边长信息a,其缺省值为0。请在注释“//** 4 **”之后添加适当的语句。输出结果如下:三角形面积:200正方形面积:400注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。源程序文件test3_3.cpp清单如下:include<iostream.h>class base{protected://** 1 **public:base(int a,int b){//** 2 **}virtual void disp(){cout<<"调用base基类"<<endl;)};class triangle:public base{public:triangle(int a,int b):base(a,b){};void disp(){//** 3 **}};class square:public base{public://** 4 **void disp(){cout<<"正方形面积:"<<x*y<<endl;}};void main(){base *p;triangle t(20,20);square s(20);p=t;p—>disp();p=S;p->disp();}

下面关于虚函数的描述,错误的是( )。A.在成员函数声明的前面加上virtual修饰,就可把该函数声明为虚函数B.基类中说明了虚函数后,派生类中对应的函数也必须说明为虚数C.虚函数可以是另一个类的友元函数,但不能是静态成员函数D.基类中说明的纯虚函数在其任何派生类中都必须实现

下面关于虚函数的描述中,正确的是( )。A.基类中利用virtual关键字说明一个虚函数后,其派生类中定义相同的原型函数时可不必加virtual来说明B.虚函数是非成员函数C.虚函数是static类型的成员函数D.派生类中的虚函数与基类中类型相同的虚函数具有不同的参数个数或类型

是一个在基类中说明的虚函数,它在该基类中没有定义,但要求任何派生类都必须定义自己的版本。A.虚析构函数B.构造函数C.纯虚函数D.静态成员函数

下面的描述中,( )是正确的。A.virtual可以用来声明虚函数B.含有纯虚函数的类是不可以用宋创建对象的,因为它是虚基类C.即使基类的构造函数没有参数,派生类也必须建立构造函数D.静态数据成员可以通过成员初始化成员列表来初始化

在下面叙述中,不正确的是( )。A.一个类的所有对象都有各自的数据成员,它们共享函数成员B.一个类中可以有多个同名的成员函数C.一个类中可以有多个构造函数、多个析构函数D.在一个类中可以声明另一个类的对象作为它的数据成员

下面关于虚函数的描述中,正确的是( )。A)基类中利用virtual关键字说明一个虚函数后,其派生类中定义相同的原型函数时可不必加virtual来说明B)虚函数是非成员函数C)虚函数是static类型的成员函数D)派生类中的虚函数与基类中类型相同的虚函数具有不同的参数个数或类型

非成员函数应声明为类的__________函数才能访问这个类的private成员。

下面描述中,正确的是()。A、virtual可以用来声明虚函数B、含有纯虚函数的类是不可以用来创建对象的,因为它是虚基类C、即使基类的构造函数没有参数,派生类也必须建立构造函数D、静态数据成员可以通过成员初始化列表来初始化

如果一个类的虚函数被声明为私有成员函数,会有语法错误吗?当它作为基类时,可以在应用类体系时实现动态联编吗?

在具有继承关系的类层次体系中,析构函数执行的顺序是()A、对象成员析构函数―基类析构函数―派生类本身的析构函数B、派生类本身的析构函数―对象成员析构函数―基类析构函数C、基类析构函数―派生类本身的析构函数―对象成员析构函数D、基类析构函数―对象成员析构函数―派生类本身的析构函数

下列哪一种顺序是派生类构造函数正确的调用其它构造函数顺序。()A、基类构造函数—对象成员所在类的构造函数—派生类自己的构造函数初始化自定义数据成员B、基类构造函数—派生类自己的构造函数初始化自定义数据成员—对象成员所在类的构造函数C、派生类自己的构造函数初始化自定义数据成员—对象成员所在类的构造函数—基类构造函数D、对象成员所在类的构造函数—派生类自己的构造函数初始化自定义数据成员—基类构造函数

在声明一个类时,必须同时声明类的数据成员和成员函数。

关于虚函数的描述中,()是正确的。A、虚函数是一个静态成员函数B、虚函数是一个非成员函数C、虚函数既可以在函数说明时定义,也可以在函数实现时定义D、派生类的虚函数与基类中对应的虚函数具有相同的参数个数和类型

单选题C++程序下列说法正确的有()A对调用的虚函数和模板类都进行迟后编译B基类与子类中函数如果要构成虚函数,除了要求在基类中用virtual声明,而且必须名字相同且参数类型相同返回类型相同C重载的类成员函数都必须要:或者返回类型不同,或者参数数目不同,或者参数序列的类型不同D静态成员函数和内联函数不能是虚函数,友员函数和构造函数也不能是虚函数,但是析构函数可以是虚函数

单选题下列哪一种顺序是派生类构造函数正确的调用其它构造函数顺序。()A基类构造函数—对象成员所在类的构造函数—派生类自己的构造函数初始化自定义数据成员B基类构造函数—派生类自己的构造函数初始化自定义数据成员—对象成员所在类的构造函数C派生类自己的构造函数初始化自定义数据成员—对象成员所在类的构造函数—基类构造函数D对象成员所在类的构造函数—派生类自己的构造函数初始化自定义数据成员—基类构造函数

单选题关于虚函数的描述中,()是正确的。A虚函数是一个static类型的成员函数B虚函数是一个非成员函数C基类中说明了虚函数后,派生类中与其对应的函数可不必说明为虚函数D派生类的虚函数与基类的同名虚函数应具有不同的参数个数和类型

单选题在创建派生类对象时,构造函数的执行顺序是()A对象成员构造函数―基类构造函数―派生类本身的构造函数B派生类本身的构造函数―基类构造函数―对象成员构造函数C基类构造函数―派生类本身的构造函数―对象成员构造函数D基类构造函数―对象成员构造函数―派生类本身的构造函数

单选题下面关于虚函数的描述中正确的是(  )。A虚函数是一个静态成员函数B虚函数是一个非成员函数C虚函数既可以在函数说明时定义,也可以在函数实现时定义D派生类的虚函数与基类中对应的虚函数具有相同的参数个数和类型

单选题下面描述中,正确的是()。Avirtual可以用来声明虚函数B含有纯虚函数的类是不可以用来创建对象的,因为它是虚基类C即使基类的构造函数没有参数,派生类也必须建立构造函数D静态数据成员可以通过成员初始化列表来初始化

单选题下列关于虚函数的说明中,正确的是(  )。A从虚基类继承的函数都是虚函数B虚函数不得是静态成员函数C只能通过指针或引用调用虚函数D抽象类中的成员函数都是虚函数

单选题当基类指针指向派生类对象时,利用基类指针调用派生类中与基类同名但被派生类重写后的成员函数时,调用的是()A基类的成员函数B派生类的成员函数C不确定D先调用基类的,再调用派生类的