📜  C ++ |析构函数|问题4

📅  最后修改于: 2021-07-02 17:18:44             🧑  作者: Mango

#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基础课程》。