下列程序的输出结果是(  )。    #include<iostream>    using namespace std;    class TestClass{    static int i;    public:    TestClass(){i++

admin2010-06-06  22

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

选项 A、111
B、121
C、211
D、221

答案D

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

最新回复(0)