虚函数实例

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

运行结果

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

相关推荐
元让_vincent17 小时前
DailyCoding C++ CMake | CMake 踩坑记:解决 ROS 项目中的“循环引用”与库链接依赖问题
c++·机器人·ros·动态库·静态库·cmake·循环引用
燃于AC之乐17 小时前
深入解剖STL set/multiset:接口使用与核心特性详解
开发语言·c++·stl·面试题·set·multiset
HAPPY酷18 小时前
C++ 高性能消息服务器实战:融合线程、异步与回调的三大核心设计
java·服务器·c++
HAPPY酷18 小时前
现代 C++ 并发服务器的核心模式
服务器·开发语言·c++
Epiphany.55618 小时前
蓝桥杯2024年第十五届决赛真题-套手镯
c++·算法·蓝桥杯
王老师青少年编程18 小时前
2022年信奥赛C++提高组csp-s初赛真题及答案解析(阅读程序第3题)
c++·题解·真题·初赛·信奥赛·csp-s·提高组
良木生香18 小时前
【C++初阶】C++入门相关知识(1):C++历史 & 第一个C++程序 & 命名空间
c语言·开发语言·c++
寻寻觅觅☆1 天前
东华OJ-基础题-106-大整数相加(C++)
开发语言·c++·算法
fpcc1 天前
并行编程实战——CUDA编程的Parallel Task类型
c++·cuda
ceclar1231 天前
C++使用format
开发语言·c++·算法