首页 > 试题广场 >

类B和类A的公有派生类,类A和类B中都定义了虚函数func(

[单选题]
类B是类A的公有派生类,类A和类B中都定义了虚函数func(),p是一个指向类A对象的指针,则p->A::func()将()?

  • 调用类B中函数func()
  • 即调用类A中函数,也调用类B中的函数
  • 调用类A中函数func()
  • 根据p所指的对象类型而确定调用类A中或类B中的函数func()
推荐
【正确答案】C
【解析】这边通过作用域解析运算符 :: 明确指定了要访问的是 A 类中的 func()。
 
作用域解析运算符知识点讲解】
更多C++基础专业知识讲解,点击链接即可查看
https://www.nowcoder.com/link/zxyl-cpp70
编辑于 2021-11-18 08:18:54 回复(0)
类B是类A的公有派生类,A类中有虚函数fun(),B类对其进行了重写,使虚函数指针进行了覆写,p是一个指向类A对象的指针,则p->func()则会由多态性原理调用B类中的函数,但题目中是p->A::func(),指定了func 是A类作用域下的函数,故而
调用类A中函数func()
编辑于 2022-04-01 17:38:51 回复(0)
应该是”B类是A”
发表于 2017-10-02 17:28:30 回复(0)
加了作用域,当然调用该域内函数
发表于 2017-08-24 15:52:27 回复(4)
两点
第一p指向A类对象
第二加了作用域A::
所以p->A::func()调用的是A类的成员函数func,输出"A"
发表于 2019-06-05 11:06:15 回复(0)
因为加了作用于限定符,所以调用的是A里面的函数。
如果是父类的指针或引用指向子类,则会产生多态,贴上测试代码:

发表于 2019-01-06 19:37:27 回复(2)
发生多态的条件:
1, 有继承
2, 虚函数重载
3, 父类指针指向子类对象

发表于 2017-12-11 17:38:51 回复(0)
1,若基类和派生类都没virtual,声明派生类对象时,会调用基类的构造,再调用派生类构造 2,加了virtual,但是有:: 这样会限制对象,只会调用作用域内的函数
发表于 2020-10-03 22:45:00 回复(0)
加了作用域啊
发表于 2017-09-01 17:42:24 回复(0)