虚函数实例

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();
}

运行结果

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

相关推荐
苏宸啊1 小时前
IPC管道
linux·c++
BestOrNothing_20151 小时前
ROS2 话题通信实战:消息对象、Publisher 发布器与 Subscriber 订阅器保姆级教程
c++·ros2·subscriber·publisher·话题通信
艾iYYY3 小时前
string 类的模拟实现
android·服务器·c语言·c++·算法
为何创造硅基生物3 小时前
C++ virtual void StartNetwork() = 0; // 纯虚:子类必须实现,否则不能 new。
c++
知无不研3 小时前
对套接字的深入理解
linux·服务器·网络·c++·socket·网络套接字
hai3152475435 小时前
FlashAttention C语言(C++)实现(展示版)
c语言·开发语言·c++·人工智能·算法
wuminyu5 小时前
Java锁机制之Java对象重量级锁源码剖析
java·linux·c语言·jvm·c++
郝学胜_神的一滴6 小时前
Qt 高级开发 026:QTabWidget御道,从筑基到化境
c++·qt
apocelipes7 小时前
GNU GCC 多版本函数扩展
c语言·c++·linux编程
代码中介商7 小时前
C++完美转发与引用折叠全解析
开发语言·c++