demo_3_polymorphism_virtual_function_1_a.cpp

来自「对于一个初涉VC++的人来书」· C++ 代码 · 共 93 行

CPP
93
字号

//*****************************************************
// 多态性和虚函数-赋值兼容规则下的对象调用和指针调用
//*****************************************************

#include <iostream.h>

class Member
{
public:
	void show() 
	{ 
		cout<<"I am a member.\n"; 
		return;
	}
	
};

class Teacher:public Member
{
public:
	void show()
	{ 
		cout<<"I am a teacher.\n"; 
		return;
	}	 
};

class Student:public Member
{
public:
	void show()
	{ 
		cout<<"I am a student.\n"; 
		return;
	}	 
};

void main()
{
	Member member;
	Teacher teacher;
	Student student;

	member.show();

	teacher.show();
	teacher.Member::show();

	student.show();
	student.Member::show();

	Member *pM;
	pM=&member;
	pM->show();
	pM=&teacher;
	pM->show();
	pM=&student;
	pM->show();

	Teacher *pT;
	pT=&teacher;
	pT->show();
	pT->Member::show();
//	pT=&member; //Error: '=' : cannot convert from 'class Member *' to 'class Teacher *'
	((Member *)pT)->show();

	Student *pS;
	pS=&student;
	pS->show();
	pS->Member::show();
//	pS=&member; //Error: '=' : cannot convert from 'class Member *' to 'class Teacher *'
	((Member *)pS)->show();

	return;
}

/*
I am a member.
I am a teacher.
I am a member.
I am a student.
I am a member.
I am a member.
I am a member.
I am a member.
I am a teacher.
I am a member.
I am a member.
I am a student.
I am a member.
I am a member.
*/

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?