第15章 面向对象编程(13)

本文深入探讨了C++中纯虚函数的概念及其应用,特别是在抽象基类和继承方面的角色。详细解释了如何使用纯虚函数来定义接口,并通过实例展示了抽象基类的使用方式。此外,文章还讨论了容器与继承之间的矛盾,以及如何通过使用句柄类来解决这一问题,确保了对象管理的灵活性和安全性。

15.6 纯虚函数

在函数列表后面写上=0以指定纯虚函数。

将函数定义为纯虚函数(pure virtual function)能够说明,该函数为后代类型提供了可以覆盖的接口,但是这个类中的版本绝不会调用。重要的是,用户将不能创建含有纯虚函数的类型的对象。

含有(或继承)一个或多个纯虚函数的类是抽象基类(abstract base class)。除了作为抽象基类的派生类的对象的组成部分,不能创建抽象类型的对象。

class Base
{
public:
	virtual int Get() =0;
};

class Child: public Base
{
public:
	int Get()
	{
		return 10;
	}
};
	Base &c1=Child();
	cout<<c1.Get()<<endl; //10
15.7 容器与继承

因为派生类对象在赋值给基类对象时会被“切掉”,所以容易以通过继承相关的类型不能很好地融合。

唯一可行的选择是使用容器保存对象的指针。这个策略可行,但代价是需要用户面对管理对象和指针的问题,用户必须保证只要容器存在,被指向的对象就存在。如果对象时动态分配的,用户必须保证在容器消灭时适当地释放对象。原因是:引用类型与指针的静态类型与动态类型可以不同,多态性的基石。

15.8 句柄类与继承

C++面向对象不能使用对象支持面向对象编程,相反,必须使用指针或引用。

句柄类存储和管理基类指针。指针所指对象的类型可以变化,它既可以指向基类类型对象又可以指向派生类型对象。用户通过句柄类访问继承层次的操作。因为句柄类使用指针执行操作,虚成员的行为将在运行时根据句柄实际绑定的对象的类型而变化因此,句柄的用户可以获得动态行为但无需操心指针的管理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值