为什么C++被称为语言联盟?
Why C++ is called federation of languages?
我正在阅读有关C++的教程,出现了以下行。没有提供其他细节来进一步解释
C++是一个"语言联盟"并支持多范式编程,但我们有很多选择。
当C++被称为语言联盟时,这意味着什么,什么是多范式编程?
这是《有效C++第三版》中解释的 改进程序和设计的 55 种具体方法 作者:Scott Meyers,项目1:将C++视为语言联盟。
今天的C++是一种多范式编程语言,一种支持一种 过程式、面向对象、函数式、泛型和 元编程功能。这种功能和灵活性使C++成为一种工具 没有平等,但也会引起一些混乱。所有"适当的 用法"规则似乎有例外。我们如何理解这些 一种语言?
最简单的方法是不将C++视为单一语言,而是将其视为 相关语言联盟。在特定子语言中, 规则往往简单、直接且易于记忆。什么时候 您从一种子语言转移到另一种子语言,但是,规则可能会 改变。要理解C++,您必须认识到其主要内容 子语言。幸运的是,只有四个:
C.深入,C++仍然基于C.块,语句,预处理器,内置数据类型,数组,指针等,都来了 从C。在许多情况下,C++提供了解决问题的方法 优于 C 对应项(例如,见第 2 项(替代 预处理器(和 13(使用对象管理资源((,但是 当您发现自己使用 C++ 的 C 部分时,规则 有效的编程反映了 C 语言更有限的范围:没有模板,没有 例外,无重载等。
面向对象的C++。C++的这一部分就是 C with Classes 的全部内容:类(包括构造函数和析构函数(, 封装、继承、多态、虚函数(动态 绑定(等。这是经典规则的C++的一部分 面向对象设计最直接适用。
模板C++。这是C++的通用编程部分,也是大多数程序员经验最少的部分。模板 考虑因素C++普遍存在,良好的规则并不少见 编程以包含特殊的仅模板子句(例如,参见 Item 46 关于在调用模板函数时促进类型转换(。 事实上,模板是如此强大,它们产生了一个全新的 编程范式,模板元编程(TMP(。项目48规定 TMP的概述,但除非你是一个铁杆模板迷,否则你 不用担心。TMP的规则很少与 主流C++编程。
STL。当然,STL 是一个模板库,但它是一个非常特殊的模板库。其关于容器的公约, 迭代器、算法和函数对象很好地融合在一起,但 模板和库也可以围绕其他想法构建。The STL 有特定的做事方式,当你使用 STL,您需要确保遵循其约定。
语言联盟"意味着应用C++语言的各种功能和方法的广泛性。
多范式语言组合范式。例如F-Sharp,OCaml和Swift。所以这是一组语言风格。
是的,这是来自有效C++。作者只是说C++语法来自一系列子语言。在此处阅读有关它的信息。
至于多范式编程,它是一种语言支持多种编程风格的能力。这为不同的任务提供了灵活性。谷歌搜索应该为您回答这个问题。
- 我们可以访问一个不存在的联盟的成员吗
- 不同语言中相同代码的不同行为
- 为什么C++对链表中的下一个节点使用指针,而像 C# 或 Java 这样的语言只使用类 Node 的名称?
- r语言 - C++ 类型为"const std ::?
- 通用C++/Python 多语言的存在
- 为什么我的 EnumWindowProc 不能用 C 语言编译?
- 了解算法的性能差异(如果以不同的编程语言实现)
- Rextester 语言编译C++问题
- 如何将多种语言设置放在单个 .clang 格式文件中
- 不同语言中的模运算符差异
- 刚接触C++,难以理解语言的细微差别
- 为什么开发人员将C / C ++用于嵌入式系统,而不是像Python这样的高级语言与C相比?
- 我们可以用 C 语言嵌套 #define 和 #if 吗?
- 我的C++语言蛮力算法有问题
- 如何删除已输入的书以及如何使标题,语言和名称在上面放置空格不会出错?
- 为什么编程语言被编译为汇编程序而不是二进制?
- QDirIterator语言 - No hasNext not FilePath reaction
- "C.UTF-8" C++ Windows 上的语言环境?
- 了解 cin.fail() 和 cin.clear语言 - Vector 追加程序
- 为什么C++被称为语言联盟?