從《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++ 中作用域可嵌套”。我覺得這種不好的習慣應該禁止,至少不推薦,更不要美化。說清楚如果區分二者就行了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章