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

admin2019-04-01  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;
return0:
}
执行后的输出结果是(    )。

选项 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/QUt0FFFM
0

最新回复(0)