Вывод этой программы:Не могли бы вы помочь объяснить результат программы на C++?
A :: Fun C :: Do
Почему это не так:
A :: Fun A :: сделать
В основном это касается того, как работает виртуальная функция, но я не так хорошо знаком с ней, на самом деле я полностью новичок на C++, вам действительно нужно ваше терпение, чем кс.
#include <iostream>
using namespace std;
class A {
private:
int nVal;
public:
void Fun() { cout << "A::Fun" << endl; }
void Do() { cout << "A::Do" << endl; }
};
class B :public A {
public:
virtual void Do() { cout << "B::Do" << endl; }
};
class C :public B {
public:
void Do() { cout << "C::Do" << endl; }
void Fun() { cout << "C::Fun" << endl; }
};
void Call(B &p) {
p.Fun();
p.Do();
}
int main() {
C c;
Call(c);
}
Соблюдайте все предупреждения и информацию об отладке ('g ++ -Wall -Wextra -g') и ** используйте отладчик ** (' gdb') для выполнения вашей программы шаг за шагом. Читайте о [динамической рассылке] (https://en.wikipedia.org/wiki/Dynamic_dispatch) и [таблице виртуальных методов] (https://en.wikipedia.org/wiki/Virtual_method_table) –