问题 单项选择题

有以下程序:
#include <iostream>
using namespace std;
class count

static int n;
public:
count ( )

n++;

static int test()

for (int i = 0; i < 4; i++ )
n++;
return n;

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

cout<<count :: test()<<" ";
count c1, c2;
cout<<count :: test()<<end1;
return 0;

执行后的输出结果是( )。

A.4 10

B.1 2

C.22

D.24

答案

参考答案:A

解析: 程序首先定义了类count,其内部含有private类型数据成员“static int n;”,同时含有public类型构造函数count()和静态成员函数static int test(),这两个函数的功能分别是为对象申请系统资源并将静态数据成员n加1和将静态数据成员n加4。主函数前,程序将静态数据成员n初始化为0,该数据成员为所有类count的对象所共有的数据成员。主函数中,程序首先执行静态成员函数test()(由于test声明为static,因此其调用时无需通过具体对象)。而其执行过程中,静态数据成员n应该加4变成 n=4,因此此处输出为4。此后程序创建对象c1和c2,由于在每次创建过程中都要调用构造函数count(),而每次调用count()函数后,静态数据成员n值都会加1,因此,创建两个对象之后,n值变为n=6;再次执行test()函数后,n的值再次加4,此时变为n=6+4=10。故程序全部执行后,变量n值变为10,而中间程序输出为“4 10”。

单项选择题
单项选择题