下列程序的输出结果是【 】。 #inClude<iostream> using namespace std; class Test { public:   Test() {cnt++;} ~Test(){cnt-

admin2013-05-30  34

问题 下列程序的输出结果是【  】。
   #inClude<iostream>
   using namespace std;
   class Test {
   public:
     Test() {cnt++;}
      ~Test(){cnt--;}
      static int Count() {return cnt;}
   private:
      static int cnt;
   };
   int Test::cnt=0;
   int main()
   {
      cout<<Test::Count()<<”;
       Test t1,t2;
      Test*pT3=new Test;
      Test*pT4=new Test;
      cout<<Test::Count()<<’’;
      delete pT4;
      delete pT3;
      cout<<Test::Count()<<endl;
      return 0;
   }

选项

答案42

解析 本题考核静态数据成员与静态成员函数的定义与使用方式。C++中,提出静态成员的目的是为了解决数据共享的问题。一个给定类的每个对象都有类中定义的所有数据的自己的拷贝,如果在类中将数据成员用static说明为静态的,则这个类成员只有一个拷贝并被这个类的所有对象所共享。类Test的静态成员cnt,初始值为0,所以执行语句“cout<<Test::Count()<<’’;”后输出0。然后程序创建了两个对象t1和 t2,以及两个对象指针并调用new来初始化指针,所以cnt的值变成了4(即此时输出为4)。然后程序将对象指针pT4、pT3 delete了,此时将分别调用析构函数将cnt的减1,所以最后输出cnt的值为2。
转载请注明原文地址:https://jikaoti.com/ti/mNE0FFFM
0

最新回复(0)