www.gusucode.com > 《C++高级语言程序设计》PPT及全书例子源代码-源码程序 > 《C++高级语言程序设计》PPT及全书例子源代码-源码程序/code/C++例题程序/第4章/s4_5/smain4_5.cpp
//Download by http://www.NewXing.com //主文件 //文件名:ch4_5\smain4_5.cpp #include "sclass4_5_student.h" //包含类定义头文件 //主测试程序 void main() { CPerson oCPerson; //构造一个CPerson类的对象 CStudent oCStudent; //构造一个CStudent类的对象 cout<<"\n1:-通过基类指针调用基类对象----"<<endl; CPerson *pCPerson = &oCPerson; //指向基类CPerson类对象 pCPerson->ShowName(); //调用CPerson类的ShowName() pCPerson->ShowName("德华刘"); pCPerson->ShowSex("男"); pCPerson->ShowAge(10); cout<<"\n2:-通过基类指针调用派生类对象----"<<endl; pCPerson = &oCStudent; //指向派生类CStudent类对象 pCPerson->ShowName(); //不具有虚特性,调用基类的 pCPerson->ShowName("学友张"); //不具有虚特性,调用基类的 pCPerson->ShowSex("男"); //不具有虚特性,调用基类的 pCPerson->ShowAge(18); //虚函数,调用派生类的ShowAge() cout<<"\n3:-通过派生类指针调用派生类对象----"<<endl; CStudent *pCStudent = &oCStudent; //指向派生类对象 //pCStudent->ShowName(); //失败:派生类中有同名函数,把基类的隐藏了 //oCStudent.ShowName(); //失败:通过对象本身调用也不行 pCStudent->CPerson::ShowName(); //隐藏的函数可以通过作用域符号调用 pCStudent->ShowName("学友张"); //基类的ShowName被隐藏 pCStudent->ShowSex(true); //基类的ShowSex()被隐藏 pCStudent->CPerson::ShowSex("女"); //可以通过作用域符号调用基类的ShowSex() pCStudent->ShowAge(18); //基类的ShowAge()被覆盖 pCStudent->CPerson::ShowAge(10); //可以通过作用域分辩符调用基类的ShowSex() cin.get(); }