![]() |
16. Семантика копирования | ||
Будут ли ошибки компиляции? |
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | class test { public: test() { } private: test(test const&) { } }; int main() { try { throw test(); } catch(test const&) { } return 0; } |
Правильный ответ. | ||
Чтобы ответить на этот вопрос, необходимо знать две вещи. Первое — должна ли создаваться копия бросаемого объекта, и второе — может ли семантика быть implementation-defined. В данном случае создание копии объекта является implementation-defined. Семантика же не должна нарушаться ни при каких условиях. В приведенном примере будет ошибка компиляции, даже если копия объекта и не будет создаваться. |
|
Статистика |
|