Nadpisywanie funkcji C ++
Mam trzy różne klasy podstawowe:
<code>class BaseA { public: virtual int foo() = 0; }; class BaseB { public: virtual int foo() { return 42; } }; class BaseC { public: int foo() { return 42; } }; </code>
Następnie wywodzę się z bazy w ten sposób (zastąp X dla A, B lub C):
<code>class Child : public BaseX { public: int foo() { return 42; } }; </code>
W jaki sposób funkcja jest nadpisywana w trzech różnych klasach podstawowych? Czy moje trzy następujące założenia są prawidłowe? Czy są jakieś inne zastrzeżenia?
Z BaseA klasa potomna nie kompiluje się, czysta funkcja wirtualna nie jest zdefiniowana.W BaseB funkcja podrzędna jest wywoływana podczas wywoływania foo na BaseB * lub Child *.W BaseC funkcja podrzędna jest wywoływana podczas wywoływania foo w Child *, ale nie w BaseB * (wywoływana jest funkcja w klasie nadrzędnej).