`
daojin
  • 浏览: 676916 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

pure abstract class(什么是纯抽象类?)

阅读更多
下面是C++的创造者的回答,供你参考

Bjarne Stroustrup:

我在对人们解释这个问题的过程中遇到了很多问题,而且我也一直不能理解为什么让人们理解这个问题是如此困难。自C++出现那天起,就存在着包含数据成员的类和不包含数据成员的类。在过去,人们强调利用一个最基础的设施以及该设施内部的东西来构造软件系统,而那个“最基本的设施”通常就是抽象基类。从80年代中叶到80年代末,那些仅由虚拟函数组合而成的类通常都被称为ABCs(Abstract Base Classes 抽象基类)。1987年,我在C++中加入了纯虚函数的概念,一个纯虚函数必须被其派生类重写。借助此概念,你可以在一个C++类中通过将其成员函数声明为纯虚函数的方法表明该类是一个纯接口类。从那以后,我就一直强调在C++中,有一种主要的使用类的方法就是让该类不包含任何状态,而仅仅作为一个接口。

从C++的角度来看,一个抽象类和一个接口之间没有任何区别。有时,我们习惯使用“纯抽象类”这个词来表示某个类仅仅只含有纯虚函数(不包含任何数据成员),它是抽象类的最常见的形式。当我试图向人们解释这个概念时,我发现如果我不先向他们介绍纯虚函数这个语言中被直接支持的概念,人们就很难接受它。有些人仅仅因为可以在基类中放入一些数据成员,就觉得他们必须这样做。他们这样做,就等于构造了经典的不稳定基类,当然同时也就招致该结构所带来的一切问题。当我向人们介绍C++中直接支持抽象基类的概念时,情况稍微好一些,不过仍然有许多人不能理解它。我认为这是由于我自身的原因所造成的教育上的失败 — 我低估了做这件事的难度。这与早些时候Simula社团在理解新概念上的失败异常相似。有些新概念难以理解,部分原因在于许多人并不是真的想去学习一些全新的东西,他们自以为自己已经知道了答案。而一旦以为自己已经知道了答案,再去学一些新东西就会变得非常困难了。在1991年的《The C++ Programming Language》第二版中,有几个例子描述了抽象类的概念,可不幸的是,我并没有在全书从头至尾都贯穿这个思想。
分享到:
评论

相关推荐

    ZipStorer - A Pure C# Class to Store Files in Zip

    ZipStorer - A Pure C# Class to Store Files in Zip

    PureMVC教程,PureMVC教程,是学习PureMVC框架的好文章,PureMVC教程,是学习PureMVC框架的好文章,PureMVC教程,是学习PureMVC框架的好文章

    PureMVC教程,是学习PureMVC框架的好文章,PureMVC教程,是学习PureMVC框架的好文章,PureMVC教程,是学习PureMVC框架的好文章PureMVC教程,是学习PureMVC框架的好文章,PureMVC教程,是学习PureMVC框架的好文章,PureMVC...

    第10讲_纯跟踪(Pure Pursuit)法1

    算法简介参考轨迹预瞄点C下的后轮实际圆弧轨迹轨迹跟踪控制算法——纯跟踪(Pure Pursuit)法在中,,则为了使车辆后轮跟踪圆弧虚线轨迹到达C点,在中需要满

    pure, `pure` ZSH提示输入的端口.zip

    pure, `pure` ZSH提示输入的端口 纯 pure的端口,将ZSH主题设置为 Fish

    基于Matlab实现纯跟踪(Pure Pursuit)算法源码+项目说明.zip

    基于Matlab实现纯跟踪(Pure Pursuit)算法源码+项目说明.zip 基于Matlab实现纯跟踪(Pure Pursuit)算法 在参考资料1的基础上修正部分错误,优化代码,演示纯跟踪算法。 ![图片](./imgs/1.png) ## 纯跟踪算法本质 ...

    pure-drawer, 纯画布视图的纯CSS过渡效果.zip

    pure-drawer, 纯画布视图的纯CSS过渡效果 纯抽屉版本:1.0.2纯抽屉是一个 100% css解决方案,用于关闭画布抽屉。下载https://github.com/mac81/pure-drawer/tree/master/src演示http://mac81.githu

    Lua实现PureMVC

    这个是一个根据AS3(ActionScript 3) pureMVC而转换过来的lua pureMVC。所有的接口完全跟AS3版本一致...注意,这个PureMVC中的 class(ClassName, BaseName) 函数并不提供,因为此框架本意就是为了用于cocos2d-x-lua中。

    使用PureMVC实现ASP.NET的MVC结构开发

    这是一个使用C#开发语言的...PureMVC不仅仅是Flex的MVC框架哦,而且它非常的小巧,还等什么呢,快来试用一下吧。 PureMVC的设计思想真的是很棒的,如果再加上C#3.0的LINQ,那就更加的完美了。 5分,不超值你们骂死我。

    pureMVC安装包,SDK

    如你下载后的存放的目录是D组:/下载,解压后将创建一个名为PureMVC_AS3_2_0_4的文件夹(注:其中的2_0_4是版本号) ; 打开PureMVC_AS3_2_0_4文件夹,您会发现里面有三个文件夹: asdoc :对应于API的文档,它的首页...

    51个pure图标集合

    pure图标包集合,内含51个常用软件的桌面图标,可以用于自定义或者美化电脑桌面的软件图标。解压后右键桌面软件图标,属性,选择解压后的ico图标文件,确定,即可更换图标

    PureMVC五子棋游戏源码,学习PureMVC

    PureMVC五子棋游戏源码,学习PureMVC

    PureMVC框架实例

    flex PureMVC框架实例 flex PureMVC框架

    前端开源库-pure-render-decorator

    前端开源库-pure-render-decorator纯渲染装饰,使反应组件纯。

    基于Pure Pursuit算法的智能车路径跟踪_

    基于Pure Pursuit算法的智能车路径跟踪,纯追踪算法容易实现。

    pure CSS

    Pure是一个简单、实用的CSS框架,鉴于目前网上对pure的资料比较少,所以我想把使用pure的一些经验介绍给大家,相信你看完本文后也会爱上pure。 Pure包含多个模块:Base(基本样式)、Grids(网格系统)、Forms(表单)、...

    pureMVC项目包

    pureMVC项目包 导入的包 pureMVC项目包pureMVC项目包

    PureMVC C#框架

    Pure MVC是在基于模型、视图和控制器MVC模式建立的一个轻量级的应用框架,此资源是PureMVC standard 单线程开发框架.

    pureMVC框架源码

    pureMVC框架 pureMVC源码 学习pureMVC的知识

    pure control.zip

    这个代码是做了一个pure control demo,具体的文档见我的博客https://blog.csdn.net/caokaifa/article/details/91376997 这个代码是做了一个pure control demo,具体的文档见我的博客...

Global site tag (gtag.js) - Google Analytics