www.gusucode.com > 《C++高级语言程序设计》PPT及全书例子源代码-源码程序 > 《C++高级语言程序设计》PPT及全书例子源代码-源码程序/code/C++例题程序/第4章/s4_6/smain4_6.cpp

    //Download by http://www.NewXing.com
//主文件
//文件名:ch4_6\smain4_6.cpp

#include "sclass4_6_student.h"	//包含类定义头文件

//主测试程序
void main()    
{
	CPerson oCPerson("德华刘","男");			//构造一个CPerson类的对象
	CStudent oCStudent("学友张","男",20050101); //构造一个CStudent类的对象
	CTeacher oCTeacher("孔老师","男",5000);		//构造一个CTeacher类的对象
		//构建一个在职学生对象。
	CTeacherAndStudent oCTeacherAndStudent("小巩俐", "女",400, 20050202);

	cout<<"\n1:-通过CPerson基类引用调用----"<<endl;
	TestReference(oCPerson);					//以基类对象作引用参数
	TestReference(oCStudent);					//以派生类对象oCStudent作引用参数
	TestReference(oCTeacher);					//以派生类对象oCTeacher作引用参数
	TestReference(oCTeacherAndStudent);	//以派生类对象oCTeacherAndStudent作引用参数


	cout<<"\n2:-通过CPerson基类指针调用----"<<endl;
	CPerson *pCPerson;							//声明一个指向基类对象的指针
	pCPerson = &oCPerson;						//指向基类CPerson类对象
	pCPerson->Show();							//调用CPerson类的Show()
	pCPerson = &oCStudent;						//指向派生类CStudent类对象
	pCPerson->Show();							//调用CStudent类的Show()
	pCPerson = &oCTeacher;						//指向派生类CTeacher类对象
	pCPerson->Show();							//调用CTeacher类的Show()
	pCPerson = &oCTeacherAndStudent;	//指向二级派生类对象oCTeacherAndStudent
	pCPerson->Show();//调用CTeacher类的Show();说明通过基类指针可调用二级派生对象

	cout<<"\n3:-通过一级派生类指针调用----"<<endl;
	CStudent *pCStudent = &oCTeacherAndStudent;
	pCStudent->Show();							//调用对象oCStudent的Show()
	CTeacher *pCTeacher = &oCTeacherAndStudent;
	pCTeacher->Show();							//调用对象oCTeacher的Show()

	cin.get();  
}