( 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/

题目

( 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;

};


相似考题
更多“( 12 ) “ 图形 ” 类 Shape 中定义了纯虚函数 CalArea() ,“ 三角形 ” 类 Triangle 继承了类Shape ”相关问题
  • 第1题:

    39、下面是类Shape的定义:class Shape {public: virtual void Draw()=0; }; 下列关于Shape类的描述中,正确的是()。

    A.类Shape是虚基类

    B.类Shape是抽象类

    C.类Shape中的Draw函数声明有误

    D.语句“Shape s;”能够建立Shape的一个对象s


    B

  • 第2题:

    定义一个抽象类Shape,并派生出类Rectangel和Circle,二者都有计算面积的函数getArea,在主函数中定义一个Shape指针数组分别指向Rectangel和Circle的对象,并通过Shape类的指针数组实现对这两个对象的成员函数的调用,以输出圆和矩形的面积。


    #include class Shape {public:virtual double area()const=0; };class Square:public Shape{public:Square(double s):side(s){}double area() const{return side*side;}private:double side;};class Trapezoid:public Shape{public:Trapezoid(double i,double j,double k):a(i),b(j),h(k){}double area() const{return ((a+b)*h/2);}private:double a,b,h;};class Triangle:public Shape{public:Triangle(double i,double j):w(i),h(j){}double area() const{return(w*h/2);}private:double w,h;};void main(){Shape *p[5];Square se(5);Trapezoid td(2,5,4);Triangle te(5,8);p[0]=&se;p[1]=&td;p[2]=&te;double da=0;for(int i=0;i{da+=p[i]->area();}cout

  • 第3题:

    设计一个几何图形的面积计算器,希望这个计算器可以计算圆、三角形和矩形等图形的面积,主要包括了抽象类Shape与其2个子类、面积计算器类Calculator、以及主类Main的设计。


    首先要明白这道题目的考查点是什么,一是大家首先要对计算机原理的底层细节要清楚、要知道加减 法的位运算原理和知道计算机中的算术运算会发生越界的情况,二是要具备一定的面向对象的设计思想。 首先,计算机中用固定数量的几个字节来存储的数值,所以计算机中能够表示的数值是有一定的范围 的,为了便于讲解和理解,我们先以byte 类型的整数为例,它用1 个字节进行存储,表示的最大数值范围 为-128 到+127。-1 在内存中对应的二进制数据为11111111,如果两个-1 相加,不考虑Java 运算时的类型提 升,运算后会产生进位,二进制结果为1,11111110,由于进位后超过了byte 类型的存储空间,所以进位部 分被舍弃,即最终的结果为11111110,也就是-2,这正好利用溢位的方式实现了负数的运算。-128 在内存 中对应的二进制数据为10000000,如果两个-128 相加,不考虑Java 运算时的类型提升,运算后会产生进位, 二进制结果为1,00000000,由于进位后超过了byte 类型的存储空间,所以进位部分被舍弃,即最终的结果 为00000000,也就是0,这样的结果显然不是我们期望的,这说明计算机中的算术运算是会发生越界情况 的,两个数值的运算结果不能超过计算机中的该类型的数值范围。由于Java中涉及表达式运算时的类型自 动提升,我们无法用byte 类型来做演示这种问题和现象的实验,大家可以用下面一个使用整数做实验的例 子程序体验一下: int a = Integer.MAX_VALUE; int b = Integer.MAX_VALUE; int sum = a + b; System.out.println(“a=”+a+”,b=”+b+”,sum=”+sum); 先不考虑long 类型,由于int 的正数范围为2 的31 次方,表示的最大数值约等于2*1000*1000*1000, 也就是20 亿的大小,所以,要实现一个一百亿的计算器,我们得自己设计一个类可以用于表示很大的整数, 并且提供了与另外一个整数进行加减乘除的功能,大概功能如下: ()这个类内部有两个成员变量,一个表示符号,另一个用字节数组表示数值的二进制数 ()有一个构造方法,把一个包含有多位数值的字符串转换到内部的符号和字节数组中 ()提供加减乘除的功能 public class BigInteger { int sign; byte[] val; public Biginteger(String val) { sign = ; val = ; } public BigInteger add(BigInteger other) { } public BigInteger subtract(BigInteger other) { } public BigInteger multiply(BigInteger other) { } public BigInteger divide(BigInteger other) { } } 备注:要想写出这个类的完整代码,是非常复杂的,如果有兴趣的话,可以参看jdk 中自带的 java.math.BigInteger 类的源码。面试的人也知道谁都不可能在短时间内写出这个类的完整代码的,他要的 是你是否有这方面的概念和意识,他最重要的还是考查你的能力,所以,你不要因为自己无法写出完整的 最终结果就放弃答这道题,你要做的就是你比别人写得多,证明你比别人强,你有这方面的思想意识就可 以了,毕竟别人可能连题目的意思都看不懂,什么都没写,你要敢于答这道题,即使只答了一部分,那也 与那些什么都不懂的人区别出来,拉开了距离,算是矮子中的高个,机会当然就属于你了。另外,答案中 的框架代码也很重要,体现了一些面向对象设计的功底,特别是其中的方法命名很专业,用的英文单词很 精准,这也是能力、经验、专业性、英语水平等多个方面的体现,会给人留下很好的印象,在编程能力和 其他方面条件差不多的情况下,英语好除了可以使你获得更多机会外,薪水可以高出一千元。

  • 第4题:

    【其它】声明一个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;}

  • 第5题:

    下列纯虚函数描述错误的是()

    A.纯虚函数的声明形式为:virtual 返回类型 函数名(形式参数)=0;

    B.只要定义了纯虚函数的类,就是抽象类,不能用来声明对象实例

    C.纯虚函数不具有继承性

    D.纯虚函数的作用就是在基类中为其派生类保留一个函数的名字,以便派生类根据需要对其进行定义


    定义纯虚函数的目的是为了重用其算法代码