C++:EffectiveC++:Article01:将C++视为一个语言联邦

news/2024/10/30 21:27:58/

C++被视为一个语言联邦

  • 1. C
  • 2. Objcet-Orienred C++
  • 3. Template C++
  • 4. STL标准库

不论你的编程背景是什么,你应该将C++视为一个由相关语言组成的联邦而非单一语言,在其某个次语言中(sublanguage)各种守则与通例都倾向简单,直观易懂,并且容易记住,然而当你从另一个次语言切换至另一个次语言时,守则可能改变,为了理解C++你必须认识其主要的次语言,幸运的是总共只有4个。

1. C

C++说到底是以C为基础。
💚💚
区块(blocks),语句(statements),预处理器(preprocessor),内置数据类型(built-in data types),数组(arrays), 指针(pointers)等统统来自C。许多时候C++对问题的解法其实不过就是较高级的C解法,但当你你以C++内的C成分工作时,高效编程守则映射出C语言的局限:没有模板(templates), 没有异常(exception),没有重载(overloading)。

2. Objcet-Orienred C++

这部分是 C with Classes所诉求的:classes(构造函数和析构函数),封装(encapsulation),继承(inheritance),多态(polymorphism),virtual虚函数,动态绑定…等等。 这一部分是面向对象设计在C++上的直接体现。

3. Template C++

这是C++的泛型编程基础(generic programing)部分,也是大多数程序员经验最少的部分。Template相关考虑与设计已经充满整个C++。
实际上由于 Template威力强大,他们带来崭新的编程规范(programming paradigm),也就是所谓的 template metaprogramming(TMP 模板元编程)

4. STL标准库

STL是个 template 程序块,看名称也知道,但它是非常特殊的一个,它对容器(containers),迭代器(iterator),算法(algorithms)以及函数对象(function objects)的规约有极佳的紧密配合与协调,然后 templates及程序库也可以其他方法建置出来,STL有自己特殊的办事方式,当你伙同 STL一起工作时,你必须遵守他们的规约。

💚💚
所以记住上面四个次语言,当你从某个次语言切换到另一个次语言,导致高效编程守则要求你改变策略时,不要感到惊讶。
例如:

  1. 对内置类型(也就是 C-like)类型而言 pass-by-value 通常比 pass-by-reference 更高效,
  2. 但是当你从 C part of C++ 迁移到 Object-Oriented C++ 由于用户自定义(user-defined)构造函数和析构函数存在,pass-by-reference 往往更好,运用 Template C++ 尤其如此。
  3. 但是你一旦跨入 STL 你就会了解 迭代器和阿含糊对象都是 C指针之上塑造出来的,所以 STL的迭代器和函数对象,旧式的 C pass-by-value守则更适用

http://www.ppmy.cn/news/92242.html

相关文章

数据安全运营有效管理-数据安全复合治理框架和模型解读(1)

数据治理,数据安全治理行业在发展,在实践,所以很多东西是实践出来的,哪有什么神仙理论指导,即使有也是一家之说,但为了提高企业投产比,必要的认知是必须的,落地运营管理水平差异直接决定产品和项目是否可持续性,当前和未来更需要专业和有效创新。数据安全治理要充分考…

【数据结构与算法】- 周测二

课程链接: 清华大学驭风计划 代码仓库:Victor94-king/MachineLearning: MachineLearning basic introduction (github.com) 驭风计划是由清华大学老师教授的,其分为四门课,包括: 机器学习(张敏教授) , 深度学习(胡晓林教授), 计算…

Linux 下进行权限修改

查看权限 ls -l 文件名该命令可以查看文件的详细属性,包括文件的权限 权限含义 -rwxrwxrwx在文件系统中,user、group、others的权限是分开的,第一个rwx代表user的权限、第二个rwx代表group的文件、第三个rwx代表others的权限 字符含义值…

CDGA 认证:第五章 数据建模和设计(重点章节)习题集解析

1. 以下选项不属于数据建模和设计治理中质量管理内容的是( ) A 开发数据建模和设计标准 B 评审数据模型以及数据库设计质量 C 管理数据模型版本与集成 D 评估数据模型运行效率 【答案解析】DAMA-DMBOK2 P120-121 5.5 数据建模和设计治理(5.5.1质量管理) 开发数据建模和设…

# Spring Boot 中如何使用 Spring Cloud Sleuth 来实现分布式跟踪?

Spring Boot 中如何使用 Spring Cloud Sleuth 来实现分布式跟踪? 在微服务架构中,通常会有多个服务相互协作,为了方便排查问题,我们需要对服务之间的调用进行跟踪。Spring Cloud Sleuth 是 Spring Cloud 生态中的分布式跟踪解决方…

CentOS7磁盘空间缩减

在 CentOS 7 操作系统中,有时您需要缩减磁盘空间以释放存储资源。本篇文章将为您介绍如何缩减 CentOS 7 磁盘空间。 在开始缩减磁盘空间之前,请务必确保已经做好了备份工作,以免造成数据丢失。虽然缩减磁盘空间不会删除您的数据,…

“超级品牌”已成型!解码名创优品的进阶之路

随着经济复苏,消费者心智和市场趋势逐渐发生变化,零售市场竞争步入深水区,为品牌带来了更大考验。但反过来,也令更多潜力股加速崛起。 北京时间5月16日,名创优品集团(NYSE:MNSO;HKEX: 9896)公布…

HTTP协议、 HTTPS协议,SSL协议及完整交互过程

HTTP协议、 HTTPS协议,SSL协议及完整交互过程; HTTPS协议,SSL协议及完整交互过程 SSL 1. 安全套接字(Secure Socket Layer,SSL)协议是Web浏览器与Web服务器之间安全交换信息的协议。 2. SSL协议的三…