В чем проблема со следующим кодом?
class A
{
public:
A() {}
~A(){}
};
class B: public A
{
public:
B():A(){}
~B(){}
};
int main(void)
{
A* a = new B();
delete a;
}
Поведение не определено, потому что деструктор A не является виртуальным.
class A
{
public:
A() {}
~A(){}
};
class B: public A
{
public:
B():A(){}
~B(){}
};
int main(void)
{
A* a = new B();
delete a;
}
Предположим, что целое число занимает 4 байта и в следующих классах нет выравнивания, предскажите вывод.
Anonymous Quiz
13%
0
29%
40
44%
80
14%
4
Что выведет код?
Anonymous Quiz
21%
0
46%
У программы неопределенное поведение
14%
Compiler Error
18%
Другое
Вынесет ли компилятор strlen() в отдельную переменную?
Anonymous Quiz
32%
Нет
68%
Да, GCC сделает так
Может ли класс в С++ реализовывать сразу несколько интерфейсов?
Anonymous Quiz
37%
Да, интерфейсов можно реализовывать сколько угодно
6%
Нет, класс одновременно может реализовать только один интерфейс
40%
Интерфейсов как конструкции языка вообще нет в С++
17%
Реализовать можно только один, а вот наследоваться от любого количества