C++异常处理问题9

null

#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
喜欢就支持一下吧
点赞10 分享