![](https://static.youtibao.com/asksite/comm/h5/images/m_q_title.png)
下面是类Shape的定义:class Shape{public:virtual void Draw()=0;}下列关于Shape类的描述中,正确
下面是类Shape的定义: class Shape{ public: virtual void Draw()=0; } 下列关于Shape类的描述中,正确的是()。
A.类Shape是虚基类
B.类Shape是抽象类
C.类Shape中的Draw函数声明有误
D.语句“Shape s;”能够建立Shape的一个对象s
![](https://static.youtibao.com/asksite/comm/h5/images/solist_ts.png)
下面是类Shape的定义: class Shape{ public: virtual void Draw()=0; } 下列关于Shape类的描述中,正确的是()。
A.类Shape是虚基类
B.类Shape是抽象类
C.类Shape中的Draw函数声明有误
D.语句“Shape s;”能够建立Shape的一个对象s
/****************** 文件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(){}
};
阅读以下说明和Java代码,将应填入(n)处的字句写在答题纸的对应栏内。
【说明】
某绘图系统存在Point、Line、Square三种图元,它们具有Shape接口,图元的类图关系如图6-1所示。现要将Circle图元加入此绘图系统以实现功能扩充。已知某第三方库已经提供了XCircle类,且完全满足系统新增的Circle图元所需的功能,但XCircle不是由Shape派生而来,它提供的接口不能被系统直接使用。代码6-1既使用了XCircle又遵循了Shape规定的接口,既避免了从头开发一个新的Circle类,又可以不修改绘图系统中已经定义的接口。代码6-2根据用户指定的参数生成特定的图元实例,并对之进行显示操作。
绘图系统定义的接口与XCircle提供的显示接口及其功能如下表所示:
【代码6-1】
class Circle (1) {
private (2) pxc;
public Circle(){pxc=new (3) ;
}
public void display(){
pxc. (4) ;
}
}
【代码6-2】
public class Factory{
public (5) getShapeInstance(int type){ //生成特定类实例
switch(type){
case 0: return new Point ();
case 1: return new Rectangle () ;
case 2: return new Line () ;
case 3: return new Circle () ;
default: return null;
}
}
public class App{
public static void main (String argv[] )
if (argv. length != l) {
System. out.println ("error parameters !");
return;
}
inttype= (new Integer (argv[0])) .intValue (
Factory factory = new Factory () ;
Shape s;
s=factory, (6)
if (s==null) {
System.out.println ("Error get instance !" )
return;
}
s.display () ;
return;
}
}
下面是类MyClass的定义,对定义中各语句描述正确的是()。 class MyClass { private: int x,y, z; public: void MyClass(int A) { x=a; } //① int f(int a, int B) //② { x=a; y=b; } int f(int a,
A.语句①是类MyClass 的构造函数的定义
B.语句②和③实现类成员函数的重载
C.语句④实现对类成员变量x的更新操作
D.语句①、②、③和④都不正确
A.类体中只能有变量定义和成员方法的定义,不能有其他语句
B.构造函数是类中的特殊方法
C.类一定要声明为public的,才可以执行
D.一个java文件中可以有多个class定义
TestClass类定义如下: class TestClass { private: intid; char gender; char*phone; public: TestClass ():id(0),gender('#'),phone(NULL){) TestClass(int no,char ge='#',char *ph=NULL) {id=no;gender=ge;phone=ph;} }; 下面类对象定义语句中错误的是()。
A.TestClass myObj(i);
B.TestClass myObj(2,"11101111155");
C.TestClass myObj(1,'m');
D.TestClass myObj;
class S:public R{…};
class T:private S{…};
在关于类S的描述中正确的是(18),在关于类T的描述中正确的是(19)。
A.类S的对象可以访问F1,但不能访问F2
B.类S的对象可以访问F2,但不能访问F1
C.类S的对象既可以访问F1,也可以访问F2
D.类S的对象既不能访问F1,也不能访问F2
class S: public R {…};
class T: private S {…};
在关于类S的描述中正确的是(45);在关于类T的描述中正确的是(46)。
A.类S的对象可以访问F1,但不能访问F2
B.类S的对象可以访问F2,但不能访问F1
C.类S的对象既可以访问F1,也可以访问F2
D.类S的对象既不能访问F1,也不能访问F2
对于类定义: class A{ public: virtual void funcl(){} void func2(){} ); class B:public A{ public: voidfuncl(){cout<<“class Bfunc 1”<<endl;} virtual void func2(){cout<<“class B func 2”<<endl;} }; 下面正确的叙述是()。
A.A::func2()和B::funcl()都是虚函数
B.A::func2()和B::funcl()都不是虚函数
C.B::funcl()是虚函数,而A::func2()不是虚函数
D.B::funcl()不是虚函数,而A::func2()是虚函数
对于类定义 class A { public: virtual void funcl(){} void func2(){} }; class D:public A{ public: void funcl(){cout<< "class B rune 1"<<end1;} virtual void func2(){cout<< "class B func 2"<<end1;} }; 下面正确的叙述是 ______。
A.A::func2()和B::funcl()都是虚函数
B.A::func2()和B::funcl()都不是虚函数
C.B::func1()是虚函数,而A::func2()不是虚函数
D.B::func1()不是虚函数,而A::func2()是虚函数
类MyClass的定义如下: class MyClass { public: MyClass(){} MyClass(int i){value=new int(i);} int*value; }; 若要对value赋值,则下面语句正确的是()。
A.MyClass my;my.value=10;
B.MyClass my;*my.value=10;
C.MyClass my;my.*value=10;
D.MyClass my(10);