多态的介绍

多态在编程中主要体现在静态多态和动态多态。静态多态包括函数重载和运算符重载,由编译器在编译时期决定。动态多态则依赖于继承和虚函数,允许父类指针调用子类重写的函数,这种行为在运行时确定。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

多态

多态按字面的意思就是多种形态。当类之间存在层次结构,并且类之间是通过继承关联时,就会用到多态。C++多态意味着调用成员函数时,会根据调用函数的对象的类型来执行不同的函数。

  • 静态多态:函数重载(运算符重载),模板属于静态多态,在编译期间就能确定的多态。
  • 动态多态:父类的指针或引用指向子类对象,通过指针或引用调用子类重写的虚函数,在运行期间才能确定具体调用哪个函数,是动态多态。
  • 启动动态多态的条件:有继承关系,子类重写父类虚函数并且父类指针调用子类重写的虚函数。
#include<iostream>

using namespace std;

class A
{
public:
	int a;
	int b;
	int c;
	const int d = 1;
	virtual void work()
	{
		cout << "A work()" << endl;
	}
	void fun()
	{
		cout << "A fun()" << endl;
	}
};

class B :public A
{
public:
	virtual void work()
	{
		cout << "B 重写了父类 A 的work函数" << endl;
	}
	void fun()
	{
		cout << "B fun()" << endl;
	}
};

class C :public B
{
public:
	void work()
	{
		cout << "C 重写了父类 B 的work函数" << endl;
	}
	void fun()
	{
		cout << "C fun()" << endl;
	}
};

int main()
{
	//多态,父类指针指向子类对象
	A* a = new C();
	a->fun(); //函数隐藏,只需要函数名字(fun)相同即可,会去调用指针类型的函数
	a->work(); //父类指针指向子类对象,去调用虚函数的时候会调用被重写的虚函数
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值