- [P1]一个可执行程序适用于一个特定的硬件/系统组合,不具可移植性。例如Mac上的可执行程序无法直接移植到Windows PC。当我们谈论C++程序的可移植性时,通常是指源代码的可移植性。也就是说,同一份源代码可以在不同系统上成功编译并运行。
依然有人不晓得所谓可移植性是什么意思。C++的可移植性是针对源代码来说的,指的是一次编写,到处编译。而Java强调的是一次编译,到处运行Java是实现了可执行文件的移植性。
- [P2]ISO的C++标准定义了两种实体:核心语言特性,标准库组件。每个C++实现都提供标准库组件,它们其实也是非常普通的C++代码。换句话说,C++标准库可以用C++语言本身实现(仅在实现线程上下文切换这样的功能时才使用少量机器代码)。这就确保C++在面对绝大多数要求较高的系统编程任务时既有丰富的表达力,同时也足够高效。
小括号里的信息挺重要,以前没注意过,也没遇到过。
- [P2]C++是一种静态类型语言,意味着在使用任何实体(如对象,值,名称和表达式)时,编译器都必须清楚该实体的类型。对象的类型决定了能在对象上执行的操作。
静态语言相较于动态语言更为高效,无论是CPU还是内存。
- [P6]符号=是一种比较传统的形式,最早被C语言使用。但是如果拿不准的话,最好在C++中使用更通用的{}列表形式。抛开其他因素不谈,使用初始值列表的形式至少可以确保不会发生某些可能导致信息丢失的类型转换。
编译器会对等号赋值私下进行类型转换,导致信息丢失。如int i=3.2; i是3,如果用列表的形式 int i{3.2};编译器会给出提示报错。
- [P6]常量在声明时必须进行初始化,普通变量也只应在极有限的情况下不进行初始化。换句话说,在引入一个新名字时最好已经有了一个合适的值。
最佳实践,最好不要忘记初始化。
- [P7]使用auto可以帮助我们避免冗余,并且无须再书写长类型名。这一点在泛型编程中尤其重要,因为在泛型编程中程序员很难知道对象的确切类型,类型的名字也可能相当长。
auto的好处。
- [P]
- [P]
- [P]
- [P]
- [P]
- [P]
- [P]
- [P]
- [P]
- [P]
- [P]