Пожалуйста, примите во внимание приведенный ниже код:
class a
{
int a1;
public:
a()
{
printf("foo1\n");
}
};
class b : public a
{
int a2;
public:
b()
{
printf("foo2\n");
}
};
int main (int argc, const char * argv[])
{
b *instance = new a();
return 0;
}
Это выдает ошибку: невозможно инициализировать переменную типа "b *" со значением типа "a *". Отлично работает, когда я пишу
a *instance = new b();
Вывод:
foo1
foo2
Может кто-нибудь объяснить, пожалуйста, причину?Я был бы чрезвычайно признателен:)
Другое дело, если я напишу
instance->~a();
выше return 0;
, ничего лишнего не произойдет.Это потому, что конструктор может быть вызван только один раз?