在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
标准C++中有没有接口和纯抽象类的概念?
下面是C++的创造者的回答,供你参考
Bjarne Stroustrup:
我在对人们解释这个问题的过程中遇到了很多问题,而且我也一直不能理解为什么让人们理解这个问题是如此困难。
自C++出现那天起,就存在着包含数据成员的类和不包含数据成员的类。在过去,人们强调利用一个最基础的设施
以及该设施内部的东西来构造软件系统,而那个“最基本的设施”通常就是抽象基类。从80年代中叶到80年代末,那
些仅由虚拟函数组合而成的类通常都被称为ABCs(Abstract Base Classes 抽象基类)。1987年,我在C++中
加入了纯虚函数的概念,一个纯虚函数必须被其派生类重写。借助此概念,你可以在一个C++类中通过将其成员函
数声明为纯虚函数的方法表明该类是一个纯接口类。从那以后,我就一直强调在C++中,有一种主要的使用类的方
法就是让该类不包含任何状态,而仅仅作为一个接口。
从C++的角度来看,一个抽象类和一个接口之间没有任何区别。有时,我们习惯使用“纯抽象类”这个词来表示某个类
仅仅只含有纯虚函数(不包含任何数据成员),它是抽象类的最常见的形式。当我试图向人们解释这个概念时,我发现
如果我不先向他们介绍纯虚函数这个语言中被直接支持的概念,人们就很难接受它。有些人仅仅因为可以在基类中放
入一些数据成员,就觉得他们必须这样做。他们这样做,就等于构造了经典的不稳定基类,当然同时也就招致该结构
所带来的一切问题。当我向人们介绍C++中直接支持抽象基类的概念时,情况稍微好一些,不过仍然有许多人不能理
解它。我认为这是由于我自身的原因所造成的教育上的失败 — 我低估了做这件事的难度。这与早些时候Simula社团
在理解新概念上的失败异常相似。有些新概念难以理解,部分原因在于许多人并不是真的想去学习一些全新的东西,
他们自以为自己已经知道了答案。而一旦以为自己已经知道了答案,再去学一些新东西就会变得非常困难了。在1991
年的《The C++ Programming Language》第二版中,有几个例子描述了抽象类的概念,可不幸的是,我并没有在
全书从头至尾都贯穿这个思想。
|
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论