有如下程序: #include using namespace std; class TestClass{ static int i; public: TestClass(){i++;) ~TestC

admin2021-07-02  23

问题 有如下程序:
    #include
    using namespace std;
    class TestClass{
    static int i;
    public:
    TestClass(){i++;)
    ~TestClass 0{i--;)
    static int getVal0{return i;)
    );
    int TestClass::i=0;
    void f(){TestClass obj2;cout<    int main0{
    TestClass obj l;
    f0;
    TestClass*obj3=new TestClass;cout<getVal();
    delete obj3;cout<    return 0:
    )
    程序的输出结果是(    )。

选项 A、232
B、22l
C、222
D、231

答案B

解析 由i是类TestClass的静态成员,该成员被类的所有实例共享。当定义obil时,系统自动渊用构造函数TestClassω,i的值将加l;调用函数f()时,在定义obj2时系统会自动调用构造函数TestC:lass(),i的值将再加l:调用obj2.getVal();后,将i的值输出,输出值为2;当调用函数f()即将结束时,系统自动调用析构函数~TestClass(),i的值将减1;当定义obi3时,系统自动调用构造函数TestClass(),i的值将加l,调用cout<getVal();后,将i的值输出,输出值为2;调用delete obj3后将执行TestClass的析构函数~TestClass(),执行后,i的值将减1,TestC:lass::getVal()为类的一个静态成员函数,其作用是返回私有静态成员变量i的值1。
转载请注明原文地址:https://kaotiyun.com/show/H4fp777K
0

最新回复(0)