14题 14 16题 12,2
#include
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
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 ~~~~~
这下你懂没呢?
14 d static是定义静态变量,只定义一次(static int a=2)第一次调用有效,再次调用忽略这一句。