虚函数实例

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

运行结果

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

相关推荐
BestOrNothing_20151 天前
C++零基础到工程实战(4.3.3):vector数组访问与遍历
c++·迭代器·stl·vector·动态数组
charlie1145141911 天前
通用GUI编程技术——图形渲染实战(三十三)——Direct2D与Win32/GDI互操作:渐进迁移实战
c++·图形渲染·gui·win32
文祐1 天前
C++类之虚函数表及其内存布局(一个子类继承一个父类)
开发语言·c++
墨尘笔尖1 天前
最大最小值降采样算法的优化
c++·算法
YIN_尹1 天前
【Linux系统编程】进程地址空间
linux·c++
EverestVIP1 天前
C++中空类通常大小为1的原理
c++
网域小星球1 天前
C++ 从 0 入门(六)|C++ 面试必知:运算符重载、异常处理、动态内存进阶(终极补充)
开发语言·c++·面试
晚会者荣1 天前
红黑树的插入(有图)
c++
John.Lewis1 天前
C++进阶(12)附加学习:STL之空间配置器(了解)
开发语言·c++·笔记
汉克老师1 天前
GESP2023年12月认证C++三级( 第三部分编程题(2、单位转换))
c++·string·单位转换·gesp三级·gesp3级