有如下程序:    #include<iostream>    using namespace std;    class Test{    public:    Test()  {n+=2;}    ~Test()  {n-=3;}    static 

admin2010-06-06  22

问题 有如下程序:    #include<iostream>    using namespace std;    class Test{    public:    Test()  {n+=2;}    ~Test()  {n-=3;}    static int getNum(){return n;}    private:    static int n;    };    int Test::n=1;    int main()    {    Test*p=new Test;    delete p;    cout<<"n="<<Test::getNum()<<endl;    return 0;    }    执行后的输出结果是(  )。

选项 A、n=0
B、n=1
C、n=2
D、n=3

答案A

解析 语句Test*p=new Test;会调用类的构造函数Test() {n+=2;},使n的值由原来的1变为3,然后delete p调用类的析构函数~Test() {n-=3;},因为n是static型变量,所以会在3的基础上减 3,使得输出结果为0。
转载请注明原文地址:https://jikaoti.com/ti/sRW0FFFM
0

最新回复(0)