下列关于抽象类和纯虚函数的叙述中,正确的是()。
A.可以说明抽象类对象
B.抽象类中包含纯虚函数
C.可以重载抽象类的析构函数
D.抽象类的派生类一定不是抽象类
A.可以说明抽象类对象
B.抽象类中包含纯虚函数
C.可以重载抽象类的析构函数
D.抽象类的派生类一定不是抽象类
A.纯虚函数都不能有函数体
B.纯虚函数的声明以“=0;”结束
C.拥有纯虚函数的类是抽象类,能用来定义对象
D.抽象类的派生类若不实现纯虚函数,它也是抽象类
,在派生类中重载函数GetLength() ,用于求图形的周长,编写测试程序进行测试。
/****************** 文件shape.h*************************/
const float PI=3.14159f; // 定义圆周率常量
class Shape // 几何图形抽象类
{
public:
virtual float GetPerimeter()=0; // 纯虚函数,计算周长
virtual float GetAre()=0; // 纯虚函数,计算面积
};
class Rectangle: public Shape // 矩形类
{
public:
Rectangle (float len,float wid):length(len),width(wid){}
~Rectangle (){}
float GetPerimeter() {return 2*(length width);} // 计算矩形周长
float GetAre() {return length*width;} // 计算矩形面积
private:
float length, width; // 矩形的长和宽
};
class Circle: public Shape // 圆类
{
public: // 在下面编写每个成员函数
private:
float rad; // 圆的半径
};
class Square: public Rectangle // 正方形类
{
public:
Square(float len): Rectangle(len,len){}
~Square(){}
};
A.动态联编是以虚函数为基础的
B.动态联编在程序运行时确定所调用的函数代码块
C.动态联编调用多态函数时,传递的是基类对象的指针或基类对象引用
D.动态联编是在编译时确定调用某个函数的
A.虚函数一定不能有函数体
B.含有虚函数的类,不能定义该类对象
C.虚函数只能被重载,不能被继承
D.基类中声明虚函数后,派生类中可以不重载该虚函数