《编程原本 》一1.5 规范类型

简介: 本节书摘来自华章出版社《编程原本 》一书中的第1章,第1.5节,作者(美)斯特潘诺夫(Stepanov, A.),(美)麦克琼斯(McJones, P.),更多章节内容可以访问云栖社区“华章计算机”公众号查看

1.5 规范类型

存在这样一组过程,如果把它们包含到一个类型的计算基中,就能方便地把对象放入各种数据结构,或者通过算法把对象从一个数据结构复制到另一数据结构.我们称具有这样的基的类型为规范的(regular),因为使用这样的类型可以保证程序行为的规范性,进而获得类型之间的互操作性.1 可以从内部类型,如bool、int,以及限制到良形式值的double,看到规范类型的语义.一个类型是规范的,当且仅当它的基包含了相等检查、赋值、析构操作、默认构造操作、拷贝构造操作、一个全序判断2 和一个基础类型. 3
相等判断是一个过程,它以同类型的两个对象为参数,当且仅当两个对象的状态相等时返回真.同样应该定义不等判断,它应返回相等判断的否定.我们使用下面记法:
image

赋值(assignment)是一个过程,它以同类型的两个对象为参数,使得第一个对象等于第二个,但并不修改第二个对象.赋值的意义不依赖于第一个对象的初值.我们使用下面记法:
image

析构操作(destructor)是一个过程,它结束一个对象的存在.对一个对象调用析构操作之后,就不能再将任何过程作用于它,而且它以前的存储位置和资源都可以用于其他用途了.析构操作经常被隐式地调用.全局对象在应用程序
1.虽然规范性是STL的设计基础,其正式定义最早出现在文献DehnertandStepanov[2000]中.

2.严格的说法要到第4章才能说清楚,它可以是一个全序,或者一个默认的全序.

3.基础类型在第12章定义.

终止时销毁(析构),局部对象在它们声明所在的块退出时销毁,数据结构的元素在数据结构销毁时也被销毁.
构造操作(constructor)是一个过程,它把一些存储位置变换到一个对象.其可能行为可以是什么也不做,也可以是创建极其复杂的对象.
一个对象处于部分成形(partiallyformed)状态,如果它已经可以赋值或销毁.对于部分成形但尚未完全成形的对象,除了赋值(放在左边)和析构,做其他任何过程的效果都无定义.

引理1.3 良形式的对象也是部分成形的.
默认构造操作(defaultconstructor)没有参数,且能使对象达到部分成形的状态.我们将采用下面记法:
image

拷贝构造操作(copyconstructor)有一个同类型的参数,它构造出一个等于该参数的新对象.我们将采用下面记法:
image

相关文章
|
6月前
|
前端开发 JavaScript
工作中代码书写规范
前端代码规范增进代码整洁与团队协作,降低维护成本。包括代码规范、风格和注释建议:选择编程语言对应的编码规范,统一命名、缩进和换行规则;注重代码风格的一致性、简洁性和可配置性;注释要简洁明了,位于关键位置。通过制定规范文档、使用代码检查工具、定期代码审查和鼓励改进来执行规范,提升团队效率和代码质量。
71 0
|
6月前
|
存储 编译器 Linux
解析编程中不可或缺的基础:深入了解结构体类型
解析编程中不可或缺的基础:深入了解结构体类型
67 1
|
6月前
【突破常规:让函数规范成为注目的亮点】(下)
【突破常规:让函数规范成为注目的亮点】
|
6月前
【突破常规:让函数规范成为注目的亮点】(上)
【突破常规:让函数规范成为注目的亮点】
|
自然语言处理 数据管理
数据标准和数据规范到底有什么区别???
数据标准和数据规范到底有什么区别???
|
C语言
C语言进阶之路:理解不同数据之间的强制性转换
C语言进阶之路:理解不同数据之间的强制性转换
237 0
C语言进阶之路:理解不同数据之间的强制性转换
|
安全 编译器 程序员
【C++】C++补充知识&C++11及其特性
【C++】C++补充知识&C++11及其特性
【C++】C++补充知识&C++11及其特性
|
设计模式 Java 程序员
怎样才能写出规范的好代码?
最近发现一件事情,自己写的代码和公司里工作5到10年的前辈写的代码虽然功能一样,但是他们的代码更规范,更优雅。比如有时候我会给一个需求写一个方法,但是有些人就可以好几个需求通过同一个方法实现。因此有了今天这个疑问,怎样才能写出规范的好代码?
【自然框架】内部类库、控件的引用关系(最新整理,基本稳定)
  和以前相比,减少了一个项目,把Control_Interface合并到CommonFunction里面。这样引用关系就简单多了。   基本上分为三个层次:类库、自定义控件、页面基类。其中的 MetaData 负责元数据的定义和加载。
647 0
|
JavaScript 前端开发 测试技术
[译]借助函数完成可组合的数据类型(软件编写)(第十部分)
本文讲的是[译]借助函数完成可组合的数据类型(软件编写)(第十部分),在 JavaScript 中,最简单的方式完成组合就是函数组合,并且一个函数只是一个你能够为之添加方法的对象。换言之,你可以这么做:
1021 0
下一篇
无影云桌面