📄 demo_3_polymorphism_virtual_function_1_b.cpp
字号:
//***************************************************
// 多态性和虚函数
//***************************************************
#include <iostream.h>
# include <stdlib.h>
class Member
{
public:
//虚函数在基类中首次定义时,不能省略关键字virtual
virtual void show()
{
cout<<"I am a member.\n";
return;
}
};
class Teacher:public Member
{
public:
//虚函数在派生类中重新定义时,可省略关键字
// virtual void show()
void show()
{
cout<<"I am a teacher.\n";
return;
}
};
class Student:public Member
{
public:
//虚函数在派生类中重新定义时,可省略关键字
// virtual void show()
void show()
{
cout<<"I am a student.\n";
return;
}
};
void main()
{
Member member;
Teacher teacher;
Student student;
cout<<"***************************"<<endl;
//===================================================================
Member *who;
who=&member;
who->show();
who=&teacher; //赋值兼容
who->show(); //虚函数多态调用
who->Member::show(); //绕过多态机制,直接调用基类虚函数
who=&student; //赋值兼容
who->show(); //虚函数多态调用
who->Member::show(); //绕过多态机制,直接调用基类虚函数
cout<<"***************************"<<endl;
//===================================================================
// Member &rM; //Error: 'rM' : references must be initialized
Member &rM=member;
rM.show();
rM=teacher;
rM.show();
rM=student;
rM.show();
Member &rMt=teacher; //赋值兼容
rMt.show(); //虚函数多态调用
Member &rMs=student; //赋值兼容
rMs.show(); //虚函数多态调用
cout<<"***************************"<<endl;
//===================================================================
//动态绑定必须使用基类对象的指针或引用来访问虚函数才可实现
//直接使用对象无法获得多态性
member.show();
member=teacher;
member.show();
member=student;
member.show();
cout<<"***************************"<<endl;
//===================================================================
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 student.
***************************
I am a member.
I am a member.
I am a member.
***************************
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -