求解答C++编程题

14、下面程序的输出结果是()#include<iostream>usingnamespacestd;inti=0;intfun(intn){staticinta=2;a... 14、下面程序的输出结果是( )
#include <iostream>
using namespace std;
int i = 0;
int fun(int n)
{
static int a = 2;
a++;
return a+n;
}
void main()
{
int k = 5;
{
int i = 2;
k += fun(i);
}
k += fun(i);
cout << k;
}
A)13 B)14 C)15 D)16
16、下面程序的输出结果是( )
#include <iostream>
using namespace std;
class A
{
public:
A (int i) { x = i; }
void dispa () { cout << x << “,”; }
private :
int x ;
};
class B : public A
{
public:
B(int i) : A(i+10) { x = i; }
void dispb() { dispa(); cout << x << endl; }
private :
int x ;
};
void main()
{
B b(2);
b.dispb();
}
A)10,2 B)12,10 C)12,2 D)2,2
求详细分析过程,最好每一步都有分析
展开
 我来答
136071715
2013-07-02 · TA获得超过126个赞
知道小有建树答主
回答量:109
采纳率:0%
帮助的人:99.9万
展开全部
14题 14 16题 12,2
#include <iostream>
using namespace std;
int i = 0;(全局变量,从此以后的程序涉及到i的如果不是有特殊定义都默认为0)
int fun(int n)
{
static int a = 2;(静态变量,第一次调用,第二次忽略~~~~~)
a++; 第一次调用到这步就是 3,第二次调用到这步就是4……
return a+n; a+n(n既函数变量,输进来那个)
}
void main()
{
int k = 5;
{
int i = 2;(局部变量)
k += fun(i); k=5+(a(=3)+i)=5+3+2=10
}
k += fun(i);(没定义i,i默认为0) k=10+(a(=4)+i)=14第二次调用a=4
cout << k;
}
够详细麽

16、下面程序的输出结果是( )
#include <iostream>
using namespace std;
class A
{
public:
A (int i) { x = i; }
void dispa () { cout << x << “,”; }
private :
int x ;
};
class B : public A 这里表示B继承A,且是公有继承(public),这时A类的所有public
和protected成员都被B类继承,且public/protected权限不变;
{
public:
B(int i) : A(i+10) 这里表示将子类构造函数的参数传递给父类的构造函数
{ x = i; }
void dispb() { dispa(); cout << x << endl; }
private :
int x ;
};
void main()
{
B b(2); 相当于子类B构造参数i=2,传递给父类A的构造参数为i+10=12
b.dispb();
}输出答案为什么是 12,2而不是2,12呢?因为子类是从父类继承来的肯定先有父才有子,先调用父类的构造函数 输出12 在调用子类的构造函数 输出2 ~~~~~
这下你懂没呢?
名林流海
2013-07-01
知道答主
回答量:37
采纳率:0%
帮助的人:15.6万
展开全部
14 d static是定义静态变量,只定义一次(static int a=2)第一次调用有效,再次调用忽略这一句。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式