#include <iostream>
using namespace std;
class MachtNix;
static MachtNix* KannNix = nullptr;
class MachtNix {
private:
char mType;
int mId;
public:
MachtNix(char aType) : mType(aType) {
static int sCnt = 0;
mId = sCnt++;
cout << '+' << mType << mId << endl;
}
void TutNix(char c) {
if (KannNix == nullptr) {
KannNix = new MachtNix(c);
} else {
delete KannNix;
KannNix = nullptr;
}
}
~MachtNix() {
cout << '-' << mType << mId << endl;
}
};
// 全局对象(在 main 之前构造)
MachtNix x('G');
int main() {
MachtNix x('H'); // 局部对象:遮蔽全局 x
for (int i = 0; i < 2; i++) {
MachtNix x('S'); // 循环内局部对象
x.TutNix('D');
}
cout << "Ist Nix? " << (int)(KannNix == 0) << endl;
return 0;
// 以下语句不可达(unreachable code)
cout << "Tut Nix" << endl;
}
输出结果为:
+G0
+H1
+S2
+D3
-S2
+S4
-D3
-S4
Ist Nix? 1
-H1
-G0
—— 本文来自火龙信奥(义乌睿码科技):义乌青少年信息学奥赛与编程教育平台,专注 CSP-J/S、NOIP、GESP 竞赛培训,线上线下融合教学,助力编程升学。网址:hlcoding.com