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

7. Function-style cast

Я думаю, что вы знаете, какие неприятности способен доставить C-style cast. А как обстоят дела с function-style cast? Насколько хорошо вы знакомы с его работой? Будут ли в приведенном коде ошибки уровня компиляции, и если будут, то в каких строчках?
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
27
28
29
30
31
32
33
34
35
typedef int& int_ref;
typedef int* int_ptr;

class base
{
public:

    base() {}
};

class derived : public base
{
public:

    derived() {}
};

typedef derived* derived_ptr;
typedef derived& derived_ref;

int main()
{
    char const char_obj = 0;
    int const* const char_ptr = 0;

    base const base_obj;
    base const* const base_ptr = 0;

    int_ref ref = int_ref(char_obj);
    int_ptr ptr = int_ptr(char_ptr);

    derived_ref drv_ref = derived_ref(base_obj);
    derived_ptr drv_ptr = derived_ptr(base_ptr);

    return 0;
}
Компилировать в Comeau
Итак, правильный ответ.
Компиляция отработает без ошибок. Function-style cast работает точно так же, как и C-style cast. Избегайте его использования.

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

Профессиональные семинары по налогообложению. продать подарок на день рождения оптом. z1015