C++中的多态

本文介绍了C++中的多态概念,包括多态的定义、构成条件、虚函数、析构函数的重写、重载、重写与重定义的对比、抽象类以及多态的原理。通过实例解析了虚函数表和派生类对象的结构,阐述了多态如何通过虚函数表实现。
摘要由CSDN通过智能技术生成

·多态的概念

多态(Polymorphism)按字面的意思就是“多种状态”。在面向对象语言中,接口的多种不同的实现方式即为多态。多态性是允许你将父对象设置成为一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。——百度百科

说的通俗一点,多态就是多种形态,当不同的对象去完成同一个行为时会产生不同的状态。比如我们去一些商店,普通顾客不打折,学生顾客可以打八折,这就是多态的一种表现形式。就像下面的例子一样:

class Person
{
public:
	virtual void Buy()
	{
		cout << "全价" << endl;
	}
};

class Student :public Person
{
public:
	virtual void Buy()
	{
		cout <<"八折" << endl;
	}
};

void Func(Person &people)
{
	people.Buy();
}

int main()
{
	Person Mike;
	Student Jack;
	Func(Mike);
	Func(Jack);
	system("pause");
	return 0;
}

通过上面的代码运行之后,我们发现Mike和Jack由于身份的不同,行为也产生了不同。在代码中就表现在基类和派生类的方法不同。

·多态的定义及实现

·多态定义的构成条件

多态是在不同继承关系的类对象,去调用同一函数,产生了不同的行为。比如Student继承了Person。Person对象买东西全价,Student买东西半价。

那么在继承中构成多态还有两个条件:

1.调用函数的对象必须是指针或者引用。

2.被调用的函数必须是虚函数,且完成了虚函数的重写。

那么我们首先看第一点,为什么多态的实现中调用函数的对象必须是指针或者引用&#x

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值