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. 三角形的角-钝角-直角-锐角