00064.cpp

来自「通过一些基础的程序」· C++ 代码 · 共 53 行

CPP
53
字号
#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 + =
减小字号Ctrl + -
显示快捷键?