#include <iostream>
using namespace std;
class A {
public:
void m1(){ cout << 'A'; }
virtual void m2(){ cout << 'B'; }
virtual void m3(){ cout << 'C'; }
};
class B: public A {
public:
void m1(){ cout << 'D'; }
void m2(){ cout << 'E'; }
};
class C: public B {
public:
void m3(){ cout << 'F'; }
};
int main()
{
cout << "Hello World!" << endl;
A* a = new B();
a->m1();
a->m2();
a->m3();
return 0;
}
Какой будет выход? Первоначально я думал, что это будет «DEC», но после запуска программы она была «AEC»информация о простом наследовании C++
Можно ли уточнить, что происходит за этой строки кода:
A* a = new B();
m1() не является виртуальной в базовом классе А. Крепление, которое должно дать ожидаемый результат. – Mark
Вы добавили ключевое слово 'virtual, знаете ли вы, что это такое? –
-1 Это довольно глупо; вы, очевидно, просто случайно догадываетесь. Вы считали, что «виртуальный» не имеет никакой цели? Разве не удалось определить шаблон в выходе, который вы получаете? Или прочитайте свою книгу на C++? –