C++ 学习笔记:第一章
1.2 学习C++
在学习C++时, 最重要的事情就是集中关注概念, 不要迷失在语言的技术细节中。C++支持多种不同的程序设计风格。
1.3.2 哲学注记
C语言的基本设计观点: 要求“尽可能地接近机器的”语言,以使机器的所有重要方面都能以一种对程序员相当明显的方式简单而有效地加以处理。
C++是“尽可能接近需要解决的问题”, 这样才能使解决方案中的概念能够直接而紧凑地表达出来。
1.6.1 给C程序员的建议
[1] 在C++里几乎不需要用宏。用const或enum定义明显的常量,用inline避免函数调用的额外开销, 用template去刻画一族函数或者类型。用namespace避免名字冲突。
[2] 不需要在你使用某个变量之前声明它,以保证你能立即能对它进行初始化。在C++中声明可以出现在任何地方。
[3] 不要用malloc()。New运算符能将同样的事做的更好。对于realloc()请可以用vector。
[4] 试着避免void*、指针算术、联合和强制(除了在某些函数或者类实现的深层之外)。 在大部分情况下,强制都是一个设计错误的指示器。
[5] 尽量少用数组和C风格的字符串。 与传统的C风格相比,使用C++标准库string。
最重要的是, 试着将程序考虑为一组由类和对象表示的相互作用的概念。而不是一推数据结构和一些去拨弄数据结构中的二进制位的函数。
1.7 有关在C++里编程的思考
在大部分应用中都存在一些概念,它们很不容易表示为某个基本类型,也不容易表述为不相关的数据的函数。
写出好的程序,最关键的就是去设计这些类, 使它们中的每一个都能清楚的表示某个概念。 这就意味着必须集中注意一些这样的问题:
- 这个类的对象应该如何建立?
- 这个类的对象能够被复制(销毁)吗?
- 什么操作能够作用于这种对象?
如果对这类问题不存在很好的回答, 对应的概念或许是从一开始就不是很清楚。
威力最大的一种管理复杂性的智力工具就是某种层次性的序关系,虚函数常常被用于一个概念的最一般版本(基类)定义操作
共性 的另一种形式可以通过模板表示, 一个模板刻画了一族类。
1.8 忠告
[1] 在编程序时,你是在你针对的某个问题的解决方案中的思想建立起一种具体表示。让程序的结构尽可能地直接反应这些思想。
[a] 如果你能把“它”看成一个独立的概念, 就把它设计成一个类。
[b] 如果你能把“它”看成一个独立的实体, 就把它作为某个类的一个对象。
[c] 如果两个类具有共同的接口,将此接口做成一个抽象类。
[d] 如果两个类的实现由某些显著地共同东西, 将这些共性做成一个基类。
[e] 如果一个类是一种对象的容器, 将它做成一个模板。
[f] 如果一个函数实现对某容器的一个算法,将它实现为对一族容器可用的模板函数。
[g] 如果一族类、模板等相互之间有逻辑关系,将它们放在一个名字空间里。
[2] 在你定义一个并不是实现某个像矩阵或复数这样的数学对象的类时,或者定义一个底层的类型如链表的时候:
[a] 不要使用全局数据
[b] 不要使用全局函数
….其他参见P16
第二章 C++概览
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步