问题 单项选择题

下列程序的输出结果是( )。
#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。

单项选择题
名词解释