对于类定义class A { public: virtual void funcl(){} void func2(){}};class D:public A{ publi

题目

对于类定义 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()是虚函数

如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

有如下程序: include using namespace std; class A { public: virtual void f(){cout

有如下程序:

include<iostream>

using namespace std;

class A

{

public:

virtual void f(){cout<<"1";}

};

class B:public A

{

public:

B (){cout<<"2";}

};

class C:public B

{

public:

virtual void f(){B::f();cout<<"3";}

};

int main()

{

A aa,*p;

B bb;

C cc;

p=&cc;

p->f();

return 0;

}

执行上面程序的输出是______。


正确答案:2213
2213 解析:B bb将定义一个B型对象bb,这时需调用B的构造函数,在该构造函数中,将输出"2:;C cc将定义一个C型对象cc,这时需调用C的构造函数,面该函数为缺省构造函数,其将调用父类B的构造函数,在该构造函数中,将输出"2":由于p采用指针方式调用成员函数f,而f在基类中被声明为虚拟函数,故函数f的执行与指针p所指向对象的实际类型相一致,p指向一个C型对象cc,故执行p->f()时,将执行C的f函数,在该函数中,首先直接调用了父类B的函数f,而在B中直接继承了A类的f函数,故先要执行A的f函数,输出“1”,然后再输出“3”。

第2题:

对于类定义

class A{

public:

virtual void funcl(){}

void func2(){}

};

class B:public A

{

public:

void funcl(){cout <<"class B func 1”<

virtual void func2(){cout <<"class B func 2"<

};

下面正确的叙述是

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

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

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

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


正确答案:C

第3题:

有如下程序

#include

using namespace std;

class A{

public:

virtual Void funcl(){cout<< “A1”;}

void fune2(){cout<< “A2”;}

};

class B: public A{

public:

void func1(){cout<< “B1”;}

void func2(){cout<< “B2”;}

};

Int main(){

A*p=new B;

p->funcl();

p->func2();

retum0;

}

运行程序,屏幕上将显示输出______。

A.B1B2

B.A1A2

C.B1A2

D.A1B2


正确答案:D

第4题:

下面程序输出的结果是【 】。 include using namespacc std; class A { public:void sho

下面程序输出的结果是【 】。

include <iostream>

using namespacc std;

class A {

public:

void show(){tout<<"A!";}

};

class B: public A{

public:

virtual void show(){cout<<"B!";}

};

class C: public B{

public:

virtual void show(){cout<<"C!";}

};

void show_info(A *i){i->show();}

void main(){

A ia;B ib;C ic;show_info(&ia); show_info(&ib);show_info(&ic);

}


正确答案:A! B! C!
A! B! C! 解析:由于基类中声明了虚函数,故基类的引用可以调用不同类的虚函数。

第5题:

请将下列类定义补充完整。

class Base{public:void fun(){tout<<"Base::fun"<<endl;}};

class Derived:public Base

{

public:

void fun()

{

______//显示调用基类的fun函数

cout<<"Derived::fun"<<endl;

};


正确答案:Base::fun();。
Base::fun();。 解析: 本题考查的是成员函数的调用。因为横线处的作用是调用基类的fun函数,又因为派生类也碉tun()函数,所以必须对fun()函数加以限定,即Base::fun();。

第6题:

对于类定义: 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()是虚函数。

第7题:

对于类定义

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修饰,所以不是虚函数。

第8题:

有如下程序: include using namespaee std; class ONE{ public: virtual void f

有如下程序:

include <iostream>

using namespaee std;

class ONE{

public:

virtual void f( ){cout<<"1";}

};

class TWO:public ONE{

public:

TWO( )1 cout<<"2";}

{;

class THREE:public TWO{

public:

virtual void f( )}TWO::f( );cout<<"3";}

};

int main( ){

ONE aa,*P;

TWO bb;

THREE cc;

P=&cc;

p->f( );

return 0;

}

程序的输出结果是______。


正确答案:2213
2213 解析:TWO bb;调用TWO的构造函数打印2;THREE cc;调用继承类TWO的构造函数打印2;p->f( );调用类TREE的函数f( ),先显式调用TWO类的函数f( ),TWO中没有重新定义f( )函数,所以调用TWO的基类ONE的虚函数f( );打印1,然后再打印3,故答案为2213。

第9题:

下列关于Test类的定义中,正确的是______。

A) class Test implements Runnabte{

public void run(){}

public void someMethod(){}

B) class Test implements Rnuuable{

public void run();

}

C) class Test implements Rnuuable{

public void someMethod();

}

D) class Test implements Rnuuable{

public void someMethod();{}

}

A.

B.

C.

D.


正确答案:A

第10题:

有如下程序include using namespace std;class A{public:virtual void func1 (){ cou

有如下程序#include <iostream>using namespace std;class A{public:virtual void func1 (){ cout<<"A1"; }void func2(){ cout<<"A2"; }};class B: public A{public:void func l(){ cout<<"B1"; }void func2(){ cout<<"B2"; }};int main() {A *p=new B;p->func1();p->func2();return 0;}运行此程序,屏幕上将显示输出( )。

A.B1B2

B.A1A2

C.B1A2

D.A1B2


正确答案:C

更多相关问题