首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
有如下程序: #include<iostream> using namespace std; class Base { public: void funl(){cout<<"Basea";} v
有如下程序: #include<iostream> using namespace std; class Base { public: void funl(){cout<<"Basea";} v
admin
2017-10-17
16
问题
有如下程序: #include<iostream> using namespace std; class Base { public: void funl(){cout<<"Basea";} virtual void fun2(){tout<<"Base\n";} }; class Derived:public Base { public: void funl() {cout<<"Derived\n"; } void fun2() {cout<<"Derived\n"; } }; void f(Base& b) {b.funl(); b.fun2(); } int main() { Derived obj; f(obj); return 0; } 执行这个程序的输出结果是
选项
A、Base Base
B、Base Derived
C、Derived Base
D、Derived Derived
答案
B
解析
本题考查的是虚函数的概念。在C++中,一个派生类的对象可以被它的任何一个基类的指针所指向(或被基类类型的引用所引用)。若基类和派生类中存在一模一样的成员函数,那么通过该基类指针(或引用)调用这样的成员函数,究竟是应该调用基类中的还是调用派生类中的呢?答案是:若这个成员函数被定义成虚函数,那么就调用派生类中的;否则会调用基类中的。本题是一个典型的例子,funl()是一般成员函数,fun2()是虚函数,而且在派生类与基类中都存在两个这样的函数。在f()函数中,形参b是一个基类的引用,它引用的是主函数中定义的派生类对象obi。所以在调用fun()时,运行的是基类的版本,而fun2()运行的是派生类的版本。故选项 B中的结果是正确的。
转载请注明原文地址:https://kaotiyun.com/show/KWAp777K
本试题收录于:
二级C题库NCRE全国计算机二级分类
0
二级C
NCRE全国计算机二级
相关试题推荐
关于常成员函数,下列说法中错误的是
下面对静态数据成员的描述中,正确的是()
下列叙述中,不属于测试的特征的是()
以下四种说法中,正确的一项是()
下列关于运算符重载的描述中,正确的是()。
有以下程序:#include<iostream>#include<fstream>usingnamespacestd;intmain(){ofstreamofile;cha
运算符重载仍然保持其原来的优先级、________和________
下列有关运算符重载的叙述中,正确的是()。
在数据流图(DFD))中,带有名字的箭头表示
随机试题
女孩,3岁。发热伴皮疹2天。查体:全身可见散在斑疹、丘疹、疱疹和结痂,向心性分布。最可能的诊断是
哈特与富勒论战的实质是
求广义积分
关于蛋白质二级结构的叙述,不正确的是
牡丹皮与赤芍共有功效为
某企业2008年2月份成立,发放当月工资时,已代扣代缴个人所得税,则其应在( )内,向当地税务机关办理扣缴税款登记。
标准十分的平均数是()。
婚恋心理咨询应遵循的原则中,以下哪项不正确?()
设A=(α1,α2,α3)为三阶矩阵,若α1,α2线性无关,且α3=-α1+2α2,则线性方程组Ax=0的通解为________.
Whenfinancingiswithoutrecourse,thismeansthatthebankhasnorecoursetothe______ifsuchdraftsaredishonored.
最新回复
(
0
)