问题 单项选择题

有如下程序:   #include   usingnamespacestd;   classMyClass{   public:   MyClass(){++count;)   ~MyClass(){--count;)   staticintgetCount(){returncount;}   private:   staticintcount;   };   intMyClass::count=0;   intmain(){   MyClassobj;   cout<  MyClass*ptr=newMyClass;   cout<  deleteptr;   cout<  return0;   }   程序的输出结果是(  )。

A.121

B.232

C.221

D.122

答案

参考答案:A

解析:【解析】本题考查的知识点是静态成员。类中的静态成员是解决同一个类的不同对象之间的数据和函数共享问题的。静态成员被所有属于这个类的对象共享。这种共享与全局变量或全局函数相比,既没有破坏数据隐藏的原则,又保证了安全性。题目中,首先定义了一个obj对象,其构造函数使MyClass的静态数据成员count增1,所以第一条输出语句输出的结果是1。然后通过指针动态创建了一个MyClass类的对象,构造函数再次被调用,count变为2,所以第二次输出结果是2。接下来是用dilete删除了刚才动态创建的MyClass对象。析构函数被调用,count减1变为1,第三次输出1。故本题的输出为121。

单项选择题
单项选择题