类B是类A的公有派生类,类A和类B中都定义了虚函数 func(),p是一个指向类A对象类型的指针,则 p->func() 将 () 。A.调用类 A 中的函数 func()B.调用类 B 中的函数 func()C.根据 p 所指的对象类型而确定调用类 A 中或类 B 中的函数 func()D.既调用类 A 中函数,也调用类 B 中的函数

题目

类B是类A的公有派生类,类A和类B中都定义了虚函数 func(),p是一个指向类A对象类型的指针,则 p->func() 将 () 。

A.调用类 A 中的函数 func()

B.调用类 B 中的函数 func()

C.根据 p 所指的对象类型而确定调用类 A 中或类 B 中的函数 func()

D.既调用类 A 中函数,也调用类 B 中的函数


相似考题
参考答案和解析
A 解析:本题中,第10不能通过编译,因为getInfo定义的是float型,而里面的参数却是int型,再者,如果定义为float型也不能覆盖classA的方法。所以不正确,应该该为int型。
更多“类B是类A的公有派生类,类A和类B中都定义了虚函数 func(),p是一个指向类A对象类型的指针,则 p->func() 将 () 。”相关问题
  • 第1题:

    下列有个虚函数说法不正确的有()。

    A、虚函数是静态的

    B、虚函数声明只能出现在类定义的函数原型声明中

    C、一个虚函数无论被公有继承多少次,它仍然保持其虚函数的特性

    D、定义了虚函数后,程序中声明的指向基类的指针就可以指向其派生类


    参考答案:A

  • 第2题:

    在公有派生情况下,有关派生类对象和基类对象的关系,下列叙述不正确的是( )。

    A.派生类的对象可以赋给基类的对象

    B.派生类的对象可以初始化基类的引用

    C.派生类的对象可以直接访问基类中的成员

    D.派生类的对象的地址可以赋给指向基类的指针


    正确答案:C
    公有继承的派生类和基类是子类型的关系,所谓子类型是类型间一般和特殊的关系,即派生类是基类的子类型或者说基类的操作可以被用于操作派生类的对象。

  • 第3题:

    对于类定义: class A{ public: virtual void funcl(){} void func2(){} ); class B:public A{ public: voidfuncl(){cout<<“class Bfunc 1”<<endl;} virtual void func2(){cout<<“class B func 2”<<endl;} }; 下面正确的叙述是( )。

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

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

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

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


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

  • 第4题:

    对于类定义 classA{ public: virtual void func1(){} void func2(){} }; Class B:public A{ public: void funcl(){cout <<”class B func1” <<end1;} virtual void func2(){cout <<"class B func 2" <<end1;} }; 下面正确的叙述是

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

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

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

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


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

  • 第5题:

    关于纯虚函数和抽象类的描述中,( )是错误的。

    A.纯虚函数是一种特殊的虚函数,它没有具体的定义

    B.抽象类是指具有纯虚函数的类

    C.一个基类中说明有纯虚函数,该基类的派生类一定不再是抽象类

    D.抽象类只能作为基类来使用,其纯虚函数的定义由派生类给出


    正确答案:C

  • 第6题:

    生成派生类对象时,派生类构造函数调用基类构造函数的条件是( )。

    A.无需任何条件

    B.基类中显式定义了构造函数

    C.派生类中显式定义了构造函数

    D.派生类构造函数明确调用了基类构造函数


    正确答案:D
    D。【解析】派生类的构造函数必须通过调用基类的构造函数来初始化基类子对象。所以,在定义派生类的构造函数时除了对自己的数据成员进行初始化外,还必须负责调用基类构造函数使基类的数据成员得以初始化。

  • 第7题:

    下列说法不正确的是( )。

    A.基类指针可以指向它的公有派生类的对象

    B.指向基类的对象的指针可以指向派生类的对象,因而可以访问派生类的对象的成员

    C.基类指针不能指向其私有派生类的对象

    D.指向派生类对象的指针不可以指向基类的对象


    正确答案:B
    解析:其前半句是正确的,但后半句是错误的。它可以访问派生类的对象中由基类继承下来的成员,但不可访问派生类新增成员。

  • 第8题:

    下面描述中,正确的是()

    • A、虚函数是没有实现的函数
    • B、纯虚函数是返回值等于0的函数
    • C、抽象类是只有纯虚函数的类
    • D、抽象类指针可以指向不同的派生类

    正确答案:D

  • 第9题:

    设Time是一个类,现有指针p的定义语句:const Time *p;则通过指针p不可以修改Time类对象的公有数据成员。


    正确答案:正确

  • 第10题:

    当派生类指针指向基类对象时()

    • A、可以直接调用基类的成员函数
    • B、可以调用派生类对象的成员函数
    • C、必须强制将派生类指针转换成基类指针才能调用基类的成员函数
    • D、以上说法都不对

    正确答案:C

  • 第11题:

    单选题
    生成派生类对象时,派生类构造函数调用基类构造函数的条件是(  )。
    A

    无需任何条件

    B

    基类中显示定义了构造函数

    C

    派生类中显式定义了构造函数

    D

    派生类构造函数明确调用了基类构造函数


    正确答案: A
    解析:
    因为派生类从基类中继承,它含有基类中的数据成员和函数成员,所以当生成派生类对象时,能无条件的调用基类的构造函数。

  • 第12题:

    单选题
    下面描述中,正确的是()
    A

    虚函数是没有实现的函数

    B

    纯虚函数是返回值等于0的函数

    C

    抽象类是只有纯虚函数的类

    D

    抽象类指针可以指向不同的派生类


    正确答案: A
    解析: 暂无解析

  • 第13题:

    已知f1(int)是类A的公有成员函数,并将指针p定义为可以指向函数f1的指针类型,则可以实现让p是指向成员函数f1()的指针的语句为【 】。


    正确答案:p=A::f1;
    p=A::f1;

  • 第14题:

    下列有关继承和派生的叙述中,正确的是( )。

    A.如果一个派生类公有继承其基类,则该派生类对象可以访问基类的保护成员

    B.派生类的成员函数可以访问基类的所有成员

    C.基类对象可以赋值给派生类对象

    D.如果派生类没有实现基类的一个纯虚函数,则该派生类是一个抽象类


    正确答案:D
    私有继承方式为基类的公用成员和保护成员在派生类中成了私有成员,其私有成员仍为基类私有,但派生类对象可以访问基类的保护成员,所以基类对象不能赋值给派生类对象。抽象类是指含有纯虚拟函数的类,所以选项D正确。

  • 第15题:

    生成派生类对象时,派生类构造函数调用基类构造函数的条件是( )。

    A) 无需任何条件

    B) 基类中显示定义了构造函数

    C) 派生类中显式定义了构造函数

    D) 派生类构造函数明确调用了基类构造函数

    A.

    B.

    C.

    D.


    正确答案:A

  • 第16题:

    在基类中有定义的纯虚函数,它要求在派生类中定义,而且基类不能用以说明对象,则该类为( )。

    A.虚基类

    B.抽象类

    C.虚函数类

    D.模板类


    正确答案:B
    解析:类中一旦有纯虚函数的定义那么这个类就再也不能创建此类的对象了,我们把这种类叫做抽象类。

  • 第17题:

    关于抽象类的说法,不正确的是( )。

    A.如果一个类至少有一个纯虚函数,则此类即为抽向类

    B.抽象类中的纯虚函数没有定义,不能建立它的对象,只能派生其子类

    C.抽象类对象不能用作参数类型、函数返回类型及显式转换类型

    D.不可声明指向抽象类的指针和引用


    正确答案:D
    解析:只有能够声明指向抽象指针和引用,才能使该指针指向派生类,进而实现多态性。

  • 第18题:

    对于类定义 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 func2"<< end1;} }; 下面正确的

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

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

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

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


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

  • 第19题:

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


    正确答案:C

  • 第20题:

    当基类指针指向派生类对象时,会发生()

    • A、错误,基类指针不能指向派生类对象
    • B、基类指针可以指向派生类对象,但在此情况下只能调用基类自己定义的成员函数
    • C、基类指针可以调用派生类的成员函数
    • D、以上说法全部错误

    正确答案:B

  • 第21题:

    异质链表是()

    • A、用数组组织类对象
    • B、用链表组织类对象
    • C、用抽象类指针指向派生类对象
    • D、用抽象类指针构造派生类对象链表

    正确答案:D

  • 第22题:

    单选题
    基类的指针与派生类指针,可以分别指向基类对象或派生类对象而形成4种情形。在这4种情形中,需要进行强制类型转换的是()
    A

    基类指针指向基类对象

    B

    基类指针指向派生类对象

    C

    派生类指针指向基类对象

    D

    派生类指针指向派生类对象


    正确答案: C
    解析: 暂无解析

  • 第23题:

    单选题
    当基类指针指向派生类对象时,会发生()
    A

    错误,基类指针不能指向派生类对象

    B

    基类指针可以指向派生类对象,但在此情况下只能调用基类自己定义的成员函数

    C

    基类指针可以调用派生类的成员函数

    D

    以上说法全部错误


    正确答案: B
    解析: 暂无解析

  • 第24题:

    单选题
    当基类指针指向派生类对象时,利用基类指针调用派生类中与基类同名但被派生类重写后的成员函数时,调用的是()
    A

    基类的成员函数

    B

    派生类的成员函数

    C

    不确定

    D

    先调用基类的,再调用派生类的


    正确答案: C
    解析: 暂无解析