📄 00064.cpp
字号:
#include <iostream>
using namespace std;
class B0 //基类B0声明
{
public: //外部接口
virtual void display()
{
cout<<"B0::display()"<<endl;
} //虚成员函数
};
class B1: public B0 //公有派生,B1是B0的儿子,他可以使用void display()函数
{
public:
void display()
{
cout<<"B1::display()"<<endl;
} //虚成员函数
};
class D1: public B1 //公有派生,D1是B1的儿子,是B0的孙子,他也可以使用
{
public:
void display()
{
cout<<"D1::display()"<<endl;
} //虚成员函数void display()函数
};
void fun(B0 *ptr) //普通函数
{
ptr->display();
}
int main() //主函数
{
B0 b0,*p; //声明基类对象和指针
B1 b1; //声明派生类对象
D1 d1; //声明派生类对象
p=&b0;
fun(p); //调用基类B0函数成员
p=&b1;
fun(p); //调用派生类B1函数成员
p=&d1;
fun(p); //调用派生类D1函数成员
}
//从上述可以看出对象在调用时候是动态联编的
//因为三代都有display()函数
//但是调用的时候是分别调用的各自(继承后)的display()函数
//根据输出的标记可以判断
//尽管三个的函数名称都叫void display(),但是实现了智能选择
//则说明了是动态联编的
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -