腾讯2015校园招聘技术类研发笔试题第七题

来源:互联网 发布:y系列电机数据大全图片 编辑:程序博客网 时间:2024/06/07 06:54

2、下面程序的运行结果是(C)//不会,

#includeusing namespacestd;class Base{int x;public:Base(int b):x(b){}virtual voiddisplay(){cout<<x<<endl;<p="">}};classDerived:public Base{int y;public:Derived(int d):Base(d),y(d) {}//这里不会调用Base的构造函数从而改变x的值吗?void display(){cout<<y<<endl;<p="">}};int main(){Base b(2);Derived d(3);b.display();d.display();Base *p=&d;p->display();system("pause");return 0;}

A. 2 2 3 B.3 2 2       C. 2 3 3        D.2 3 2

解析:如果在Base的构造函数加一行:cout<<"Base:"<<x<<'\n';那么将输出:

Base:2

Base:3

2

3

3

为什么b.display();的结果是2,而不是三,我也不造,说不清

7、 下面程序的输出结果是()

#include <iostream>using namespace std;int i=0;int fun(int n){static int a=2;a++;return a*n;}int main(){int k=5;{int i=2;k+=fun(i);}k+=fun(i);cout<<k;return 0;}

A. 13        B. 14             C.15           D. 16

解析:网上有人说答案是14. 但我在vs2010里测试过,结果是11(因为第二个k+=运算时,i=0;inti=2的作用域只在定义它的{}块中);如果将i定义为1而不是0,则结果是15(因为,static局部变量的生命周期也是整个程序运行过程,所以第二个k+=运算时a=3,a++后a=4)。不明白这个结果啊完全~ps:int i=0;不能在头文件中这么定义吗?编译出错的说。

0 0
原创粉丝点击