问题 单项选择题

下列程序的输出结果是( )。#include<iostream>using namespace std;class TestClass{static int i;public:TestClass(){i++;}~TestClass(){i--;}static int getVal(){retum i;}};int TestClass∷i=0;void fun(){TestClass ob2;cout<<ob2.getVal();}int main(){TestClass obi;fun();TestClass*ob3=new TestClass;cout<<ob3->getVal();delete ob3;cout<<TestClass∷getVal();retum 0;}

A.111

B.121

C.211

D.221

答案

参考答案:D

解析:
由主函数mian入手,首先定义TestClass对象ob1,调用构造函数后,i等于1。在“int TestClass∷i=0”语句中,i首先被赋值为0,它是静态函数可以被所有对象引用,并且静态成员变量,当它值被改变后,则在各对象中这个数据成员的值都同时改变。主函数中首先调用fun函数,其中又定义了对象ob2,调用gtVal;i等于2,输出。主函数“obj*ob3=newTestClass;cout<<ob3->getVal();”动态分配,i等于2,输出。“delete ob3;”析构函数后,i等于1,然后出1。即221。

单项选择题
单项选择题