对于类定义: 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;} }

题目
对于类定义: 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()是虚函数
如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第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 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

第5题:

请将下列类定义补充完整

class Base{public: void fun(){cout<<"Base::fun"<<end1;}};

class Derived:public Base

{

public:

void fun(){

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

cout<<"Derived::fun"<<end1;

}

};


正确答案:Base::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题:

( 35 ) 有如下程序

#include

using namespace std;

class A{

public:

virtual void func1( ){ cout<<"A1"; }

void func2( ){ cout<<"A2"; }

};

class B:public A{

public:

void func1( ){ 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

第9题:

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

有如下程序:

include <iostream>

using namespace std;

class ONE

{

public:

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

};

class TWO: public ONE

{

public:

TWO() { 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

第10题:

对于类定义 class A{ public: void func2{} }; class B:public A{ public: w)id funcl| cout<<"class B func l”<<endl:} virtual voiIl fimc2{cout<<"class B func 2" <<endl:} }; 下面正确的叙述是( )。

A.A::rune2和B::funcl都是虚函数

B.A::func2和B::funel都不是虚函数

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

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


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

更多相关问题