《Effective C++》rule 01: View C++ as a federation of languages
2022/4/14 9:13:06
本文主要是介绍《Effective C++》rule 01: View C++ as a federation of languages,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
最开始,C++ 是 C + OO (Object Oriented),所以把 C++ 称为 C with Classes.
而之后 C++ 多了很多新的特性:
- exceptions (异常)
- templates (模板)
- STL (Standard Template Library, 标准模板库)
如今的 C++ 是个多范式编程语言,支持:
- 面向过程 (procedural)
- 面向对象 (object-oriented)
- 函数式编程 (functional programming)
- 泛型编程 (generic programming)
- 模板元编程 (template metaprogramming)
为了更易于理解 C++, 《Effective C++》的作者 Scott Meyers 建议将 C++ 视作一个由四个 次语言 (sublanguage) 组成的 "联邦".
在每个次语言中,规则相对简单直观,而在不同的次语言中进行转换时,规则可能有一些变化.
这四个次语言分别是:
-
C
毕竟 C++ 是从 C 发展过来的,许多内置数据类型、预处理语句、指针等都是从 C 传承来的.
-
Object-Oriented C++
顾名思义就是与面向对象相关的部分:
- 类 (classes),包括其构造函数、析构函数等
- 封装 (encapsulation)
- 继承 (inheritance)
- 多态 (polymorphism)
- virtual function (虚函数)、动态绑定等
-
Template C++
C++ 的泛型编程部分.
由于 template 功能强大,产生了新的编程范式 —— template metaprogramming (TMP, 模板元编程)
-
STL
包含 容器 (containers)、迭代器 (iterators)、算法 (algorithms)、函数对象 (function objects)等.
小 tips:
- 对内置 (C-like) 类型而言值传递 (pass by value)往往比引用传递(pass by reference)要高效.
- 然而对于 Object-Oriented C++ 而言,由于用户自定义 (user-defined) 的构造函数和析构函数的存在,引用传递 (pass by reference to const) 往往更好. (对 Template C++ 更是如此,而对于 STL 来说,pass by value 要更好,原因是迭代器和函数对象是在 C 指针之上塑造出来的)
总结: C++ 每个次语言都有自己的规约,C++ 高效编程守则视情况而变化,取决于你使用 C++ 的哪一部分.
这篇关于《Effective C++》rule 01: View C++ as a federation of languages的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-27Nacos多环境配置学习入门
- 2024-12-27Nacos快速入门学习入门
- 2024-12-27Nacos快速入门学习入门
- 2024-12-27Nacos配置中心学习入门指南
- 2024-12-27Nacos配置中心学习入门
- 2024-12-27Nacos做项目隔离学习入门
- 2024-12-27Nacos做项目隔离学习入门
- 2024-12-27Nacos初识学习入门:轻松掌握服务发现与配置管理
- 2024-12-27Nacos初识学习入门:轻松掌握Nacos基础操作
- 2024-12-27Nacos多环境配置学习入门