#include <iostream> using namespace std; class Test { static int count; int id; public : Test() { count++; id = count; cout << "Constructing object number " << id << endl; if (id == 4) throw 4; } ~Test() { cout << "Destructing object number " << id << endl; } }; int Test::count = 0; int main() { try { Test array[5]; } catch ( int i) { cout << "Caught " << i << endl; } } |
(A)
Constructing object number 1 Constructing object number 2 Constructing object number 3 Constructing object number 4 Destructing object number 1 Destructing object number 2 Destructing object number 3 Destructing object number 4 Caught 4
(B)
Constructing object number 1 Constructing object number 2 Constructing object number 3 Constructing object number 4 Destructing object number 3 Destructing object number 2 Destructing object number 1 Caught 4
(C)
Constructing object number 1 Constructing object number 2 Constructing object number 3 Constructing object number 4 Destructing object number 4 Destructing object number 3 Destructing object number 2 Destructing object number 1 Caught 4
(D)
Constructing object number 1 Constructing object number 2 Constructing object number 3 Constructing object number 4 Destructing object number 1 Destructing object number 2 Destructing object number 3 Caught 4
答复: (B) 说明: 析构函数的调用顺序与构造函数的调用顺序相反。此外,在try块之后,仅对完全构造的对象调用析构函数。 这个问题的小测验
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END