《C和C++代码精粹》——第 1 章 更好的C1.1 两种语言简述

简介:

本节书摘来自异步社区出版社《C和C++代码精粹》一书中的第1章,第1.1节,作者: 【美】Chuck Allison,更多章节内容可以访问云栖社区“异步社区”公众号查看。

第 1 章 更好的C

C和C++代码精粹
本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。

1.1 两种语言简述

C和C++代码精粹
20世纪80年代初期,C++起源于AT&T,称为带类的 C,当时Bjarne Stroustrup试图用Simula-67编写仿真程序。“类”在Simula中是表示用户定义类型的术语,编写好的仿真程序的关键是能够定义对象反映现实世界。除了把类加到C中使其成为最快的过程语言外,还有什么更好的方法可以得到快速仿真呢?选择 C语言不仅为类提供了有效的工具,并且也提供可移植性。虽然在C++出现之前已经有其他语言可以通过类支持数据抽象,但是,C++现在是应用最广泛的,几乎每个有C语言编译器的主要平台都支持C++。

第一次看C++就可能被它不可抵抗的魅力所吸引。如果有C语言基础,需要将下列术语(然后少许)增加到自己的词汇表中:

抽象类、存取限定符、适配器、(空间)分配器、基类、类、类的作用域、构造函数、复制构造函数、默认参数、默认构造函数、delete运算符、派生类、析构函数、异常、异常处理器、异常特化、显式构造函数、显式特化、导出、facet、友元、函数对象、继承、内联函数、迭代器、操纵器、成员函数、成员模板、多继承、不定性、名字空间、嵌套类、new处理器、new运算符、新风格类型转换、一次定义规则、运算符函数、重载、局部特化、指向成员的指针、多态、私有、保护、公有、纯虚函数、引用、运行期类型识别、静态成员、流、模板、模板特化、this指针、显著特性、try块、类型标识、类型安全连接、using指令、虚基类、虚析构函数、虚函数。

C++的优点在于它是一种能够处理复杂应用的强大的、高效的、面向对象的语言。因此它的缺点是它本身一定有些复杂,并且比C语言掌握起来更加困难。当然 C语言自己本身也是问题的一部分。C++是一个混合的语言,它将面向对象特征与流行的系统编程语言混合在一起。如果不是一个主语言绑定很少内容的话,介绍如此丰富的一组新特征是不可能的。因此与C语言的兼容性是C++设计的一个主要目标,就像1989年Bjarne在ANSI C++委员会的主题演讲中所陈述的那样,C++是“工程上的妥协”,并且必须要使它“越接近C越好,但不能过度”。

C++事实上是一种多范例语言,像C和Pascal那样,它支持传统的过程编程方式;像Ada一样,它支持数据抽象和通用性(模板);像其他所有面向对象语言一样,它支持继承性和多态性。所有这些可能都或多或少导致了C++成为“不纯”的编程语言,但是这也使C++成为产品化编程中更具实践性的选择。无疑C++拥有最好的性能,它可以在混合语言环境中很好地运行(不仅和C语言,而且也和其他语言),并且不需要像Smalltalk和LISP运行时所需的庞大运行期资源(后者是环境的,不只是编译和连接过程)。

下面将介绍其更多的优点。

本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。

相关文章
|
22天前
|
自然语言处理 算法 前端开发
C++与Doxygen:精通代码文档化之道
C++与Doxygen:精通代码文档化之道
47 0
|
30天前
|
自然语言处理 安全 C++
【C++ 格式化输出 】C++20 现代C++格式化:拥抱std--format简化你的代码
【C++ 格式化输出 】C++20 现代C++格式化:拥抱std--format简化你的代码
76 1
|
23天前
|
Linux 编译器 程序员
【Linux 调试秘籍】深入探索 C++:运行时获取堆栈信息和源代码行数的终极指南
【Linux 调试秘籍】深入探索 C++:运行时获取堆栈信息和源代码行数的终极指南
65 0
|
28天前
|
IDE Linux 开发工具
内存泄漏检测工具Valgrind:C++代码问题检测的利器(一)
内存泄漏检测工具Valgrind:C++代码问题检测的利器
64 0
|
1天前
|
缓存 编译器 API
NumPy与其他语言(如C/C++)的接口实践
【4月更文挑战第17天】本文介绍了NumPy与C/C++的接口实践,包括Python与C/C++交互基础、NumPy的C API和Cython的使用。通过案例展示了如何将C++函数与NumPy数组结合,强调了内存管理、类型匹配、错误处理和性能优化的最佳实践。掌握这些技能对于跨语言交互和集成至关重要。
|
10天前
|
程序员 C++
C++语言模板学习应用案例
C++模板实现通用代码,以适应多种数据类型。示例展示了一个计算两数之和的模板函数`add<T>`,可处理整数和浮点数。在`main`函数中,展示了对`add`模板的调用,分别计算整数和浮点数的和,输出结果。
10 2
|
16天前
|
C语言 C++ 容器
C调用C++代码
C调用C++代码
12 1
|
22天前
|
算法 程序员 C语言
C++设计哲学:构建高效和灵活代码的艺术
C++设计哲学:构建高效和灵活代码的艺术
60 1
|
24天前
|
Java API 开发工具
【软件设计师备考 专题 】C、C++、Java、Visual Basic、Visual C++等语言的基础知识和应用(三)
【软件设计师备考 专题 】C、C++、Java、Visual Basic、Visual C++等语言的基础知识和应用
30 0
|
24天前
|
Java 数据处理 数据库
【软件设计师备考 专题 】C、C++、Java、Visual Basic、Visual C++等语言的基础知识和应用(二)
【软件设计师备考 专题 】C、C++、Java、Visual Basic、Visual C++等语言的基础知识和应用
34 0