首页 > 代码库 > 从《thinking in C++》被迫转到《C++ Primer》第一天

从《thinking in C++》被迫转到《C++ Primer》第一天



今天啃《thinking in C++》有种不能继续下去的感觉,一方面我一看书就停不下来,难懂+没有休息容易困,所以看的速度并不快。另外感觉里边有很多内容在建立在你了解其使用的基础上的理论提升,所以我认识需要补一下基础。在网上查了一下,确定串插着看《C++ Primer》。


《C++ Primer》第一、二章笔记

一些基本的类型、控制语句、关键字什么的我都略过了。

1.在#include时,标准库的头文件用尖括号 < > 括起来,非标准库的头文件用双引号 " " 括起来。
2.输出缓冲区通常必须显式刷新以强制输出缓冲区内容。默认情况下,读 cin 会刷新 cout;当程序正常结束时,cout 也被刷新。
3.使用 double 类型基本上不会有错。在 float 类型中隐式的精度损失是不能忽视的,而 double 类型精度代价相对于 float 类型精度代价可以忽略。事实上,有些机器上,double类型比 float 类型的计算要快得多。long double 类型提供的精度通常没有必要,而且还需要承担额外的运行代价。
4.报警(响铃)符 \a  (只是觉得有意思)
5.有一些地方不能插入空格,其中之一是在单词中间。特别是不能在单词中间断开一行。但可以通过使用反斜线符号巧妙实现:
std::cou\
t << "Hi" <<endl;
相当于std::cout << "Hi" <<endl;
6.C++ 中的标识符都是大小写敏感的
7.除了关键字,C++ 标准还保留了一组标识符用于标准库。标识符不能包含两个连续的下划线,也不能以下划线开头后面紧跟一个大写字母。有些标识符(在函数外定义的标识符)不能以下划线开头。
8.初始化不是赋值
9.复制初始化和直接初始化有区别
int ival(1024); // direct-initialization
int ival = 1024; // copy-initialization
10.可以通过一个计数器和一个字符初始化string 对象。使包含重复多次的指定字符:std::string all_nines(10, ‘9‘); // all_nines= "9999999999"

11.在函数体外定义的变量都初始化成 0,在函数体里定义的内置类型变量不进行自动初始化。


看到2.3了,太晚了,脑袋装不下了,明天继续看吧。

感受1:外国作者年纪都很大吗?这本书跟《thinking in C++》一样,好多重复的说明,翻来覆去地叨叨,没办法适应一下吧,谁叫这是名书呢。

感受2:感觉有些作者包括外国作者,特别愿意把一些很烂的习惯的研究放在书里占用篇幅来讲,比如C++支持一个局部变量和全局变量名相同,还美其名曰“C++ 中作用域可嵌套”。我觉得这种不好的习惯应该禁止,至少不推荐,更不要美化。说清楚如果区分二者就行了。

从《thinking in C++》被迫转到《C++ Primer》第一天