Брутально и бессердечно о программировании и проектировании
ГлавнаяФорумАртПаттерныАнтипаттерныЗаметкиВопрос-ответКнигорецензииСправочная

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;
}
Компилировать в Comeau
Правильный ответ.
Чтобы ответить на этот вопрос, необходимо знать две вещи. Первое — должна ли создаваться копия бросаемого объекта, и второе — может ли семантика быть implementation-defined. В данном случае создание копии объекта является implementation-defined. Семантика же не должна нарушаться ни при каких условиях. В приведенном примере будет ошибка компиляции, даже если копия объекта и не будет создаваться.

Оглавление
Статистика
© 2007—2009 Inside C++ Коммерческие услугиКонтактная информация

Цены на мобильные телефоны Lg в интернет-магазинах Киева. Двери: дерево алюминиевые окна. французские лечение алкоголизма