虚函数实例

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

运行结果

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

相关推荐
十五年专注C++开发24 分钟前
TypePerf:Windows 命令行性能计数器工具(CPU利用率、内存利用率、GPU利用率等)
c++·windows·typeperf
王老师青少年编程30 分钟前
csp信奥赛C++高频考点专项训练之字符串 --【字符串排序】:字符排序
c++·字符串·csp·高频考点·信奥赛·字符串排序·字符排序
杜子不疼.38 分钟前
【 C++ AI 大模型接入 SDK】 - 日志模块
开发语言·javascript·c++
3Tony1 小时前
解决VScode报错:preLaunchTask“C/C++: gcc.exe 生成活动文件“已终止,退出代码为 -1.
c++·ide·vscode
C+++Python1 小时前
C++ 泛型编程 极简示例代码
开发语言·c++
宵时待雨1 小时前
回溯算法专题2:二叉树中的深搜
开发语言·数据结构·c++·笔记·算法·深度优先
计算机安禾2 小时前
【c++面向对象编程】第21篇:运算符重载基础:语法、规则与不可重载的运算符
java·前端·c++
开发者联盟league2 小时前
在cursor中配置c/c++开发环境
c语言·开发语言·c++
澈2072 小时前
平衡二叉树:AVL与红黑树终极对比
数据结构·c++·红黑树
ComputerInBook3 小时前
C++ 中的 lambda 表达式
开发语言·c++·lambda表达式·匿名函数