, w witch, , , witch:: saysez(). , , :
scary* w2 = new witch();
w2->saysez(cout);
... scary:: saysez().
, , . , . Foo, Foo:: MyNonVirtualFn(), Foo:: MyNonVirtualFn(). Foo , MyNonVirtualFn(), , , Foo, MyNonVirtualFn() - . Foo:: MyNonVirtualFn(), . ( , MyNonVirtualFn() , , , - , .)
Virtual functions are different in that if you call Foo :: MyVirtualFn () on an object, it checks if the object is an instance of the subclass of Foo that overrides MyVirtualFn (). For example:
Base* base = new Base();
Derived* derived = new Derived();
Base* derived_as_base = derived;
base->MyNonVirtualFn();
derived->MyNonVirtualFn();
derived_as_base->MyNonVirtualFn();
base->MyVirtualFn();
derived->MyVirtualFn();
derived_as_base->MyVirtualFn();
source
share