首页 > 试题广场 >

类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()
D是不对的
不论指针p是属于类A还是类B,也不论指针p指向的对象属于类A还是类B(当然,不能用类B的指针指向类A的对象),因为加了作用域说明符A::,因此都只会调用类A的函数。
编辑于 2020-09-21 17:35:43 回复(0)
不是多选题吗。。。
发表于 2022-04-29 19:44:53 回复(1)
我就知道这里是单选题
发表于 2023-10-19 16:33:48 回复(0)
怎么看也是单选题。。。
发表于 2023-06-26 19:13:00 回复(0)
本题考查多态: 基类指针或引用可以指向自己或所有派生类对象,此时通过该指针调用虚函数为动态绑定,即编译器只会确定该虚函数在虚函数表中的slot(偏移)。而该指针所指向的对象在运行时确定,指向哪个对象即调用该类型的虚函数表中的虚函数。本题为基类指针指向基类对象,故调用基类虚函数,即A的func()
发表于 2022-08-16 08:13:24 回复(0)
"都选C"
发表于 2022-08-17 09:52:23 回复(0)
虚函数指针,指向虚函数表。误以为,子类重写父类虚函数,改变函数入口地址,父类作用域未生效。
若   p指向的是类B的对象,加父类作用域也会生效。

发表于 2023-11-09 22:30:00 回复(0)
在C++中,使用作用域解析运算符::可以直接指定调用特定类的成员函数。当我们使用p->A::func()时,强制调用的是类A中的函数版本,无论指针p当前实际指向类A的对象还是类B的对象。
发表于 2023-08-10 09:39:52 回复(0)
明明是单选为什么标多选,好吧,错了就是菜
发表于 2023-04-01 18:00:35 回复(0)
感觉有点傻了,D对,C才对吗?既然C对了,D为啥不对,不就是因为D所以C吗?
发表于 2020-08-10 19:39:23 回复(2)