#include
using namespace std;
class A
{
int id;
static int count;
public:
A() {
count++;
id = count;
cout << "constructor for id " << id << endl;
}
~A() {
cout << "destructor for id " << id << endl;
}
};
int A::count = 0;
int main() {
A a[3];
return 0;
}
(一种)
constructor for id 1
constructor for id 2
constructor for id 3
destructor for id 3
destructor for id 2
destructor for id 1
(B)
constructor for id 1
constructor for id 2
constructor for id 3
destructor for id 1
destructor for id 2
destructor for id 3
(C)
Compiler Dependent.
(D)
constructor for id 1
destructor for id 1
答案: (A)
说明:在上面的程序中,id是一个静态变量,并且在每次创建对象时都会增加。首先创建对象a [0],但首先销毁对象a [2]。对象总是按照与创建相反的顺序销毁。顺序相反的原因是,稍后创建的对象可能会使用先前创建的对象。例如,考虑以下代码片段。
A a;
B b(a);
在上面的代码中,对象“ b”(在“ a”之后创建)可以在内部使用“ a”的某些成员。因此,在“ b”之前破坏“ a”可能会造成问题。因此,对象“ b”必须在“ a”之前销毁。
这个问题的测验
想要从精选的最佳视频中学习和练习问题,请查看《基础知识到高级C的C基础课程》。