public inheritance should imply(意味着) substitution(代替)
if B is a A,you can use a B anywhere an A can be used
if B is a A, then everything that is true for A is also true of Bbe careful if the substitution if not valid
| D is deriver(派生) from B | ||
|---|---|---|
| D | => | B |
| D* | => | B* |
| D& | => | B& |
子类的对象可以当作父类来看待
#includeusing namespace std; class A{ public: int i; A():i(10){}; }; class B:public A{ private: int j; public: B():j(30){}; void f(){ cout<<"b.j="< upcasting is the act of converting from a Derived reference or pointer to a base class reference or pointer upcasting examples Mannager pete("Pere"."88888888","Bakery"); Employee* ep = &pete; //upcast 指针 Employee& er = pete; //upcast 引用lose type information about the object:
ep->print(cout); //print base class version 使用的父类的函数子类中的函数如果与父类中的函数重名则父类的中的函数隐藏



