问题 单项选择题

有以下程序:
#include <iostream>
using namespace std;
int s=0;
class sample

static int n;
public:
sample (int i)

n=i;

static void add()

s+=n;

;
int sample::n=0;
int main ()

sample a(2) ,b(5);
sample::add();
cout<<s<<end1;
return 0;

执行后的输出结果是( )。
A) 2B) 5C) 7D) 3

答案

参考答案:B

解析: 程序中定义对象a(2)时,通过构造函数使静态数据成员n=2,在定义对象 b(5)时,通过构造函数使静态数据成员n=5(覆盖了前面n=2),再执行“sample::add();”使全局变量s=5。
注意:本题程序中尽管代码中静态数据成员n的初始化语句“int sample::n=0;”没有意义(因为各对象中的n值由变量i赋给),但不能省略,否则会出现编译错误。

单项选择题
问答题 简答题