题目内容

class B;class A {public:virtual ~A( ) { }virtual void f(A *) { cout<<1<f(&b);pa->f(pa);b.f(pa);return 0;}上边例子代码及其执行结果,说明了什么?

A. C++语言中访问虚函数时,除this指针外,还必须传递其它参数
B. C++语言中定义虚函数时,要显式给出virtual关键字
C++语言中访问虚函数时,根据参数的静态类型确定具体的函数入口
D. C++语言中访问虚函数时,根据参数动态类型确定具体的函数入口

查看答案
更多问题

classPerson{public:virtual~Person();voidfeed(Animal&ani){//1ani.eat(fetchFood());//2}private://3virtualFood&fetchFood();//4};根据上边给出的类定义,分析设计者的意图,那么说法正确的是:

A. feed的过程是固定的,但不同的Animal有不同的Food
B. Person类的子类也会有feed行为,应该给//1添加virtual关键字
C. Person类的子类也会有feed行为,但行为过程与Person是一样的,所以可以在//1和//4中任意选一个添加virtual关键字即可
D. Person类的子类会有不同的fetchFood,导致feed的行为过程一致,但行为结果可能完全不同

已知Parent类及其子类Child1,Child2的定义如下:class Parent {public:virtual ~Parent( ) { }virtual void f( ) = 0 ;};class Child1:public Parent {public:virtual ~Child1( ) { }virtual void f( ){g( );}int g( ) { /*略 */ }};class Child2:public Parent {public:virtual ~Child2( ) { }virtual void f( ){ k( );}private:void k( ) { /*略*/}};下面的代码,哪个无法体现多态性的应用价值:

A. class A {public:virtual ~A( ) { }voiduserParent( Parent * pparent) { if(pparent) pparent->f( ); }};
B. class A {public:virtual ~A( ) { }voiduserParent( Parent & parent) { parent.f( ); }};
C. class A {public:virtual ~A( ) { }voiduserParent( ) { mparent.f( ); }private:Parent mparent;};
D. class A {public:virtual ~A( ) { }voiduserParent( ) { if(mpprent) mpparent->f( ); }private:Parent * mpparent;};

已有如下类定义:class Person {public:static Male createMale( );static Femle createFemle( );virtual ~Person( );};class Male:public Person {};class Female:public Person{};如果希望用类似的方式定义其它类,那么下面最合适的是:

A. 颜色-黑-白
B. 方向-左-右
C. 孩子-老大-老二-老三
D. 三角形的角-钝角-直角-锐角

描述老鼠吃水果。如果不同种类的老鼠吃不同种类的水果,有不一样的行为,例如:大老鼠吃苹果,洗完苹果后,再吃;小老鼠吃苹果,直接不吃,放弃;大老鼠吃香蕉,连皮带瓤都吃;小老鼠吃香蕉,只吃瓤;等等。那么在下面哪种情况下,只通过简单地继承和虚函数是无法适应上述要求的?

A. 老鼠只有一种,水果有香蕉和苹果两种,且香蕉只有一种,但苹果有多种
B. 老鼠只有一种,水果有香蕉、苹果等多种,但每种水果至多只有一个对象
C. 水果只有一种,老鼠有大老鼠、小老鼠等多种,但每种老鼠的最大数量限定为5个
D. 水果有多种,老鼠有大老鼠、小老鼠等多种,但每种老鼠至多只有一个对象

答案查题题库