计算机二级

对于类定义 classA{ public: virtual void func1(){} void func2(){} }; Class B:public A{ public: void funcl(){cout <<”class B func1” <<end1;} virtual void func2(){cout <<"class B func 2" <<end1;} }; 下面正确的叙述是A.A∷func2()和B∷funcl()都是虚函数B.A∷func2()和B∷funcl()都不是虚函数C.B

题目

对于类定义 classA{ public: virtual void func1(){} void func2(){} }; Class B:public A{ public: void funcl(){cout <<”class B func1” <<end1;} virtual void func2(){cout <<"class B func 2" <<end1;} }; 下面正确的叙述是

A.A∷func2()和B∷funcl()都是虚函数

B.A∷func2()和B∷funcl()都不是虚函数

C.B∷funcl()是虚函数,而A∷func2()不是虚函数

D.B∷funcl()不是虚函数,而A∷func2()是虚函数

参考答案和解析
正确答案:C
解析:基类中说明的虚函数,在派生类中自然就是虚函数,所以类B中funcl()是虚函数;而类A中的fanc2没有被关键字virtual修饰,所以不是虚函数。
如果没有搜索结果,请直接 联系老师 获取答案。
相似问题和答案

第1题:

在下面程序中,括号里应填()。 include using namespace std; class A { public: void

在下面程序中,括号里应填( )。 #include <iostream> using namespace std; class A { public: void fun( ) { cout << "Hello" << endl; } }; class B:: public A { void fun( ) { ( ) //调用基类的函数fun( ) tout << "HI" << endl; } };

A.fun()

B.A. fun()

C.A::fun()

D.A->fun(


正确答案:C
解析:调用格式;类名>::成员名>或者类名>::成员名>(参数表>)。

第2题:

对于类定义: classA{ public: virtualvoidfuncl(){} voidfunc2(){} }; classB:publicA{ public: voidfuncl(){cout<<"classBfunc1"<<endl;} virtualvoidfunc2(){cout<<"classBfunc2" <<endl;} }; 下面正确的叙述是( )。

A.A::func2( )和B::func1( )都赵虚函数

B.A::rune2( )和B::func1( )都不是虚函数

C.B::func1( )是虚函数,而A::fune2( )不是虚函数

D.B::func1( )不是虚函数,而A::func2( )是虚函数


正确答案:C
C。【解析】基类中说明的虚函数,在派生类中自然就是虚函数,所以类B中funcl是虚函数;而类A中的func2没有被关键字virtual修饰;所以不是虚函数。

第3题:

对于类定义: class A{ public: virtual void func1( ){} void func2( ){} }; class B:public A{ public: void func1(){cout<<"class B func 1"<<end1;} virtual void func2(){cout<<"class B func 2"<<end1;} }; 下面叙述正确的是(53)。

A.A∷func2()和B∷func1()都是虚函数

B.A∷func2()和B∷func1()都不是虚函数

C.B∷func1()是虚函数,而A∷func2()不是虚函数

D.B∷func1()不是虚函数,而A∷func2()是虚函数


正确答案:C
解析:本题考查的是C++中类的继承和虚函数。要解答此类题目,我们需要对类的继承和虚函数有很清楚的认识。继承是面向对象程序设计最重要的特征,指的是一个新类从已有的类那里获得其已有的特征,并可以添加新的特征。虚函数的作用是允许在派生类中重新定义与基类同名的函数,并且可以通过基类指针或引用来访问基类和派生类中的同名函数。题目中类A声明了两个函数,一个虚函数func1()和一个函数func2(),类B继承于类A,那就继承了类A的特征,因此,类B中的func1()是一个虚函数。在类B中又把 func2()声明成虚函数,给func2()增加了新的特征,所以,类B中的两个函数都是虚函数,而在类A中只有func1()是虚函数。

第4题:

阅读下列说明和C++代码,填写程序中的空(1)~(6),将解答写入答题纸的对应栏内。
【说明】
以下C++代码实现一个简单绘图工具,绘制不同形状以及不同颜色的图形。部分类及其关系如图6-1所示。



【C++代码】
#include?#include?using?namespace?std;class?DrawCircle?{??????//绘制圆形,抽象类? ? ? public: (1);//定义参数为?int?radius,?int?x,?inty? ?virtual~DrawCircle()?{?}};class?RedCircle:public?DrawCircle?{????//绘制红色圆形? ? ? ? public: void?drawCircle(intradius,?int?x,?int?y)?{cout?<?drawCircle?=?drawCircle;? }? ?virtual~shape()?{?}? public:? ?virtual?void?draw()?=?0;};class?Circle:public?Shape?{????//圆形? ? private:? ? ?int?x,y,radius;? ? public:? Circle(int?x,inty,int?radius,DrawCircle?*drawCircle)? (3)? {? this->x?=?x;? ?this->y?=?y;? ? this->radius?=?radius; }? ? ? public:? void?draw(){? drawCircle?-> (4); }};int?main(){Shape?*redCirclenew?Circle(100,100,10,????(5)????);//绘制红色圆形? Shape?*greenCircle=new?Circle(100,100,10, (6)??);//绘制绿色圆形redCircle >draw();? ?greenCircle?->draw();? ?return?0;}


答案:
解析:
(6)(1)void drawCircle (int radius,int x,int y)
(2)DrawCircle*drawCircle
(3)drawcircle
(4)drawCircle(radius,x,y)
(5)new RedCircle()
(6)new GreenCircle()【解析】
第一空是填接口里面的方法,在接口的实现里面找,可以发现应该填void drawCircle (int radius,int x,int y)。
第二空可以根据后面this drawCircle=drawCircle判断,这里应该有一个drawCircle属性,因此应该填)DrawCircle drawCircle。
第三空这里填drawcircle,用-> drawcircle来引用父类的成员。
第四空调用drawCircle(radius,x,y)方法。
第五、六空分别创建一个红色圆形对象和一个绿色圆形对象作为Circle里面的实参。

第5题:

对于类定义: class A{ public: virtual void func1(){} Void func2 (){} }; class B:public A{ public: void func1(){cout<<"class B func 1"<<end1;} virtual void func2(){cout<<"class B func 2"<<end1;} };下面叙述正确的是( )。

A.A::func2()和B::func1()都是虚函数
B.A::func2()和B::func1()都不是虚函数
C.B::func1()是虚函数,而A::func2()不是虚函数
D.B::func1()不是虚函数,而A::func2()是虚函数

答案:C
解析:
继承是面向对象程序设计最重要的特征,指的是一个新类从已有的类那里获得其已有的特征,并可以添加新的特征。虚函数的作用是允许在派生类中重新定义与基类同名的函数,并且可以通过基类指针或引用来访问基类和派生类中的同名函数。题中类A声明了两个函数,一个虚函数func1()和一个函数func2(),类B继承于类A,那就继承了类A的特征,因此,类B中的func1()是一个虚函数。在类B中又把func2()声明成虚函数,给func2()增加了新的特征,所以,类B中的两个函数都是虚函数,而在类A中只有func1()是虚函数。

第6题:

请写出下面的输出:

class B

{

public:

virtual void Print(void)

{

printf(“B::Print\n”);

}

virtual void Reprint(void)

{

printf(“B:Reprint\n”);

}

void Algo(void)

{

Print();

Reprint();

}

};

class D : public B

{

public:

virtual void Print(void)

{

printf(“D::Print\n”);

}

};

void main()

{

B *p = new D();

p->Print();

p->Algo();

}


正确答案:
 

第7题:

对于类定义 class A{ public: virtual void func1( ){} void func2( ){} }; class B:public A{ public: void func1( ){cout<<"class B func 1"< < end1;} virtual void func2( ){cout << "class B func2"<< end1;} }; 下面正确的

A.A::func2( )和B::func1( )都是虚函数

B.A::func2( )和B::func1( )都不是虚函数

C.B::func1( )是虚函数,而A::func2( )不是虚函数

D.B::func1( )不是虚函数,而A::func2( )是虚函数


正确答案:C
解析:基类中说明的虚函数,在派生类中自然就是虚函数,所以类B中funcl()是虚函数;而类A中的func2没有被关键字virtual修饰,所以不是虚函数。

第8题:

对于类定义

class A{

public:

virtual void func1( ) {}

void func2( ) {}

};

class B: public A{

public:

void func1( ) {cout < < "class B func 1" < < endl;}

virtua1 void func2( ) {cout < < "class B func 2" < < endl;}

};

下面正确的叙述是

A.A: :func2( ) 和B: :func1( ) 都是虚函数

B.A: :func2( ) 和B: :func1( ) 都不是虚函数

C.B: :func1( ) 是虚函数,而A: :func2( ) 不是虚函数

D.B: :func1( ) 不是虚函数,而A: :func2( ) 是虚函数


正确答案:C
解析:基类中说明的虚函数,在派生类中自然就是虚函数,所以类B中func1( ) 是虚函数;而类A中的func2没有被关键字virtual修饰,所以不是虚函数。

第9题:

阅读以下说明和Java程序,填写程序中的空(1)~(6),将解答写入答题纸的对应栏内。
【说明】
以下Java代码实现一个简单绘图工具,绘制不同形状以及不同颜色的图形。部分接口、类及其关系如图5-1所示。




【Java代码】
interface?DrawCircle?{? //绘制圆形 public(1) ;}class?RedCircle?implements?DrawCircle?{? ?//绘制红色圆形???????public?void?drawCircle(int?radius,intx,?int?y)??{????????????System.out.println("Drawing?Circle[red,radius:"?+?radius?+",x:"?+?x?+?",y:"?+y+?"]");???????}}class?GreenCircle?implements?DrawCircle?{????//绘制绿色圆形??????public?void?drawCircle(int?radius,?int?x,int?y)?{???????????System.out.println("Drawing?Circle[green,radius:"?+radius+",x:?"?+x+?",y:?"?+y+?"]");??????}}abstract?class?Shape?{????//形状? protected? ? (2)???;? ? public?Shape(DrawCircle?drawCircle)?{? ?this.drawCircle=?drawCircle;? ? ? public?abstract?void?draw();}class?Circle?extends?Shape?{? //圆形? ?private?int?x,y,radius;? public?Circle(int?x,int?y,intradius,DrawCircle?drawCircle)?{? ?(3)???;? this.x?=?x;? ? ? this.y?=?y;? ?this.radius?=radius;? }? ? ?public?void?draw()?{? ? drawCircle.? ?(4)? ?;? ? ? }}public?class?DrawCircleMain?{? public?static?void?main(String[]?args)?{? Shape?redCircle=new?Circle(?100,100,10,? (5) );//绘制红色圆形? Shape?greenCircle=new?Circle(200,200,10,(6) );//绘制绿色圆形? ?redCircle.draw(); greenCircle.draw();? ?}}


答案:
解析:
(1)void drawCircle (int radius,int x,int y)
(2)DrawCircle drawCircle
(3)super.drawcircle=drawcircle
(4)drawCircle(radius,x,y)
(5)new RedCircle()
(6)new GreenCircle()【解析】
第一空是填接口里面的方法,在接口的实现里面找,可以发现应该填void drawCircle (int radius,int x,int y)。
第二空可以根据后面this drawCircle=drawCircle判断,这里应该有一个drawCircle属性,因此应该填)DrawCircle drawCircle。
第三空这里用super,用super. drawcircle来引用父类的成员。
第四空调用drawCircle(radius,x,y)方法。
第五、六空分别创建一个红色圆形对象和一个绿色圆形对象作为Circle里面的实参。

第10题:

对于以下类定义,下面正确的叙述是 。 class A { public: virtual void func1(){ } void func2(){ } }; class B:public A{ public: void func1(){cout<< ″ class B func 1 ″ <<end1;} virtual void func2(){cout<< ″ class B func 2 ″ <<end1;} };

A.:func2() 和 B::func1() 都是虚函数

B.A::func2() 和 B::func1() 都不是虚函数

C.B::func1() 是虚函数,而 A::func2() 不是虚函数

D.B::func1() 不是虚函数,而 A::func2() 是虚函数


对某些事物每个人都有自己独特的定义;人们对事物定义往往受到文化背景,个人经验,知识背景等因素的影响