有以下程序: #include <iostream> using namespace std; class count { static int n; public: count ( ) {

admin2010-03-29  17

问题 有以下程序:    #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

答案1

解析 程序首先定义了类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”。
转载请注明原文地址:https://kaotiyun.com/show/x6jp777K
0

最新回复(0)