虚函数实例

1.声明:virtual 同名成员名

可实现父类访问子类中与其同名的成员

cpp 复制代码
#include<iostream>
using namespace std;
class A{
	protected:
		int x;
	public:
		A(int x1=0):x(x1){
		}
		virtual void print(){//在类A中定义print为虚函数
			cout<<"A类中的x="<<x<<endl; 
		}
};
class B:public A{
	int y;
	public:
		B(int x1=0,int y1=0):A(x1){
			y=y1;
		}
		virtual void print(){//在类B中定义print为虚函数
			cout<<"B类中的x="<<x<<"\ty="<<y<<endl; 
		}
};
class C:public A{
	int z;
	public:
		C(int x1=0,int z1=0):A(x1){
			z=z1;
		}
		virtual void print(){//在类C中定义print为虚函数 
			cout<<"C类中的x="<<x<<"\tz="<<z<<endl; 
		}
};
int main() 
{
	A a(2);
	B b(3,4);//子类b对象将3赋值给A类中的x成员 
	C c(5,6);//子类c对象将5赋值给A类中的x成员 
	A *p[3]={&a,&b,&c};//定义父类A的指针,分别装B,C对象的地址 
	for(int i=0;i<3;i++)
	p[i]->print();//print被定义为虚函数,可实现父类A分别对子类B,C对象中同名成员的访问 
	b.print();//b对象对本类方法的访问 
	c.print();
}

运行结果

可实现子类调用自身方法同样的效果,通过父类指针去调用子类中的同名成员

相关推荐
bkspiderx22 分钟前
C++经典的数据结构与算法之经典算法思想:贪心算法(Greedy)
数据结构·c++·算法·贪心算法
郝学胜-神的一滴1 小时前
避免使用非const全局变量:C++中的最佳实践 (C++ Core Guidelines)
开发语言·c++·程序人生
晚云与城3 小时前
今日分享:C++ Stack和queue(栈与队列)
开发语言·c++
bikong73 小时前
一种高效绘制余晖波形的方法Qt/C++
数据库·c++·qt
深耕AI4 小时前
【MFC文档与视图结构:数据“仓库”与“橱窗”的梦幻联动 + 初始化“黑箱”大揭秘!】
c++·mfc
励志不掉头发的内向程序员4 小时前
STL库——二叉搜索树
开发语言·c++·学习
tan180°5 小时前
Boost搜索引擎 查找并去重(3)
linux·c++·后端·搜索引擎
阿昭L5 小时前
c++中获取随机数
开发语言·c++
3壹5 小时前
数据结构精讲:栈与队列实战指南
c语言·开发语言·数据结构·c++·算法
aaaweiaaaaaa6 小时前
c++基础学习(学习蓝桥杯 ros2有C基础可看)
c++·学习·蓝桥杯·lambda·ros2·智能指针·c++类