被调用的是指针所指的实际对象的虚函数,而非虚函数不支持多态调用。有如下程序:
#include
using namespace std;
class Base
{
public:
virtual void f () {cout<< ” f0+ ” ;}
void g () {cout<< ” g0+ ” ;}
};
class Derived:public Base
{
public:
void f () {cout<< ” f+ ” ;}
void g () {cout<< ” g+ ” ;}
};
int main ()
{
D.erived d;
B.ase*p= & d;
p->f () ; p->g () ;
return 0:
}
运行时输出的结果是
A. ) f+g+
B. ) f0+g+
C. ) f+g0+
D. ) f0+g0+
[单选题]虚函数支持多态调用,一个基类的指针可以指向派生类的对象,而且通过这样的指针调用虚函数时,被调用的是指针所指的实际对象的虚函数。而非虚函数不支持多态调用。有如下程序; #include <iostream> using namespace std; class Base { public: virtual void f() {cout<<"f0+";} void g() {cout<<"g0+";} }; class Derived: public Base { public: void
[单选题]虚函数支持多态调用,一个基类的指针可以指向派生类的对象,而且通过这样的指针调用虚函数时,被调用的是指针所指的实际对象的虚函数。而非虚函数不支持多态调用
[试题]( 11 ) 如果不使用多态机制 , 那么通过基类的指针虽然可以指向派生类对象 , 但是只能访问从基类继承的成员。下列程序没有使用多态机制,其输出结果是 ( 11 ) 。#includeusing namespace std;class Base {public:void print ( ) { cout << 'B'; } };class Derived : public Base {public:void print ( ) { cout << 'D'; }};
[单选题]( 30 ) 如果不使用多态机制 , 那么通过基类的指针虽然可以指向派生类对象 , 但是只能访问从基类继承的成员,有如下程序,没有使用多态机制。#includeusing namespace std;class Base{int a,b;public:B.ace ( int x ,int y ) { a=x; b=y;}Void show () { cout<<A<< ’ , ’ <<B<<ENDL;}}clsaa Derived:public B
[单选题]生成派生类对象时,派生类构造函数调用基类构造函数的条件是( )。A.无需任何条件B.基类中显示定义了构造函数C.派生类中显式定义了构造函数D.派生类
[单选题]如果不使用多态机制,那么通过基类的指针虽然可以指向派生类对象,但是只能访问从基类继承的成员。有如下程序,没有使用多态机制。#include<iostream>using namespace std;class Base{ int a,b;public: Base(int x,int y){a=x;b=y;} void show(){cout<<a<<','<<b<<endl;}};class Derived:public Base{ int c,d;public: Derived(int x
[试题]如果不能使用多态机制,那么通过基类的指针虽然可以指向派生类对象,但是只能访问从基数继承的成员,下列程序没有使用多态机制,其输出结果是( ) 。#includeusing namespace std;class Base{public:Void print(){cout<< ‘B’;}};class Derived: public Base{publicvoid print(){cout<< ‘D’;}}int main(){D.erived*pd=new Dreived);
[单选题]( 32 ) 在一个派生类对象结束其生命周期时A. ) 先调用 派生类的析构函数后调用基类的析构函数B. ) 先调用 基类的析构函数后调用派生类的析构函数C. ) 如果基类没有定义 析构函数,则只调用派生类的析构函数D. ) 如果 派生类 没有定义 析构函数,则只调用 基类 的析构函数
[单选题]生成派生类对象时,派生类构造函数调用基类构造函数的条件是( )。A.) 无需任何条件B.) 基类中显示定义了构造函数C.) 派生类中显式定义了构造函数D.) 派生类构造函数明确调用了基类构造函数A.B.C.D.
[单选题]在一个派生类的成员函数中,试图调用其基类的成员函数“void f( );”,但无法通过编译,这说明A.f( )是基类的私有成员B.f( )是基类的保护成员C.派生类的继承方式为私有D.派生类的继承方式为保护