📄 demo_3_polymorphism_virtual_function_1_c.cpp
字号:
//***************************************************
// 多态性和虚函数
//***************************************************
#include <iostream.h>
class Member
{
public:
//虚函数在基类中首次定义时,不能省略关键字virtual
//否则,在派生类中重新定义时,即使加上关键字virtual也起不到多态作用
//相当于没有加任何关键字virtual
void show()
{
cout<<"I am a member.\n";
return;
}
};
class Teacher:public Member
{
public:
virtual void show() //即使加上关键字virtual也起不到多态作用
// void show()
{
cout<<"I am a teacher.\n";
return;
}
};
class Student:public Member
{
public:
virtual void show() //即使加上关键字virtual也起不到多态作用
// void show()
{
cout<<"I am a student.\n";
return;
}
};
void main()
{
Member member;
Teacher teacher;
Student student;
Member *who;
who=&member; //基类指针指向基类对象
who->show();
who=&teacher; //赋值兼容,基类指针指向派生类对象
who->show(); //访问基类成员
// who->Teacher::show(); //Error:没有虚函数,基类指针不可以调用派生类成员
((Teacher *)who)->show(); //显式强制类型转换恢复派生类的地址后,访问派生类成员
//考虑运算符的优先级,括号是必需的
who=&student; //赋值兼容,基类指针指向派生类对象
who->show(); //访问基类成员
// who->Student::show(); //Error:没有虚函数,基类指针不可以调用派生类成员
((Student *)who)->show(); //显式强制类型转换恢复派生类的地址后,访问派生类成员
//考虑运算符的优先级,括号是必需的
return;
}
/*
I am a member.
I am a member.
I am a teacher.
I am a member.
I am a student.
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -