#include <iostream>
class Base {
private:
int b_value;
public:
void my_func() {std::cout << "This is Base's non-virutal my_func()" << std::endl; }
virtual void my_Vfunc() {std::cout << "This is Base's virutal my_Vfunc()" << std::endl;}
};
//----------------------------//
class Derived: public Base {
private:
int d_value;
public:
void my_func() {std::cout << "This is Derived's non-virtual my_func()" << std::endl; }
virtual void my_Vfunc() {std::cout << "This is Derived's virtual my_Vfunc()" << std::endl;}
};
int main(){
Base * base = new Derived;
base->my_func();
base->my_Vfunc();
return 0;
}
Stavo cercando di capire l'interno delle funzioni virtuali. Finora ho capito che il upcasting della classe derivata alla classe base chiama ancora la funzione virtuale quando facciamo base- > my_Vfunc () a causa di Derived :: vfptr.
La mia domanda è come viene chiamato my_func () di base qui? La mia confusione principale è come fa (durante l'upcasting) l'oggetto classe derivato fornisce informazioni sulla funzione non virtuale della classe base poiché ha solo informazioni di base come Base :: b_valore.