Jeśli mam w C++:C++ Wdrożenie funkcji wirtualnej?
class A {
private: virtual int myfunction(void) {return 1;}
}
class B: public A {
private: virtual int myfunction(void) {return 2;}
}
następnie, jeśli usunę virtual
z definicji myfunction
w class B
, to znaczy, że gdybym miał class C
podstawie class B
, że nie mogę nadpisać myfunction
ponieważ byłby statycznie skompilowany?
Jestem także zdezorientowany co do tego, co dzieje się, gdy przełączasz się tutaj na publiczne i prywatne. Jeśli zmienię definicję myfunction
w class B
na publiczną (a ta w class A
pozostanie prywatna), czy jest to jakiś poważny błąd, którego nie powinienem robić? Sądzę, że funkcje wirtualne muszą być tego samego typu, więc jest to nielegalne, ale prosimy o informację, czy to źle.
Dzięki!
Nie jest konieczne jawne zapisywanie słowa kluczowego "virtual" dla metod klas pochodnych. można go pominąć, ale jest to dobry styl, aby go mieć. – varnie