《C++ Primer》讀書筆記(第一章 開始)

礦山碼農發表於2020-08-15

本系列文章為作者閱讀《C++ primer》後總結的重要知識點,對簡單的基礎語法和常識進行了刪去,總結出容易遺忘和較為細節的知識點,適合有一定C語言語法基礎的同志閱讀。這本書實在是太厚了,但是又像是一個寶庫,希望我精簡後的知識點可以為以前閱讀過該書的同志的複習帶來便利,為從未閱讀過該書的同志做一個閱讀的引導。

1.2 初識輸入輸出

iostream庫包含兩個基礎型別:istreamostream,表示輸入流輸出流

一個流就是一個字元序列,是從IO裝置讀入或寫入IO裝置的。
“流”:隨著時間的推移,字元是順序生成或消耗的
標準庫定義了4個IO物件。
1.cin:istream型別的物件,標準輸入。
2.cout:ostream型別的物件,標準輸出。
3.cerr:ostream型別的物件,標準錯誤。用來輸出警告和錯誤資訊。
4.clog:輸出程式執行時的一般性資訊。

#include <iostream> :告訴編譯器我們想要使用iostream庫。尖括號中的名字指出了一個標頭檔案。每個使用標準庫設施的程式都必須包含相關標頭檔案。#include指令和檔案的名字必須寫在同一行中。通常情況下,#include指令必須出現在所有函式之外。

std::cout<<"Enter two numbers:"; :給使用者列印一條訊息。這個訊息是一個字串字面值常量

std::cout<<endl; :endl是一個被稱為操縱符的特殊值。效果是結束當前行,並將於裝置關聯的緩衝區中的內容刷到裝置中。緩衝重新整理操作可以保證目前為止程式產生的所有輸出都真正寫入輸出流中,而不是僅僅停留在記憶體中等待寫入流

字首std::指出名字cout和endl是定義在名為std的名稱空間中的。名稱空間可以幫我們避免不經意的名字定義衝突,以及使用庫中相同名字導致的衝突。標準庫定義的所有名字都在名稱空間std中。

1.3 註釋簡介

註釋界定符不能巢狀。(/**/)

1.4 控制流

當使用一個istream物件作為條件,其效果是檢測流的狀態。若流有效,即流未遇到錯誤,則檢測成功。遇到檔案結束符或一個無效輸入(如讀入的值不是一個整數)。istream物件的狀態會變為無效。處於該狀態的istream物件會使條件變為假。

在Windows系統中,敲Ctrl+z,然後按Enter鍵。在Unix系統中,包括Mac OS X系統中沒用Ctrl+d

編譯器的一部分工作是尋找程式文字中的錯誤。編譯器沒有能力檢查一個程式是否按照作者意圖工作,但是可以檢查形式上的錯誤。如:
1.語法錯誤(syntax error)
如endl後使用了冒號而不是分號,字串常量兩側漏掉了引號,return語句漏掉了分號等。
2.型別錯誤(type error)
如像一個期望引數為int的函式傳遞了一個字串字面值常量。
3.宣告錯誤(declaration error)
對來自標準庫的名字忘記使用std::、識別符號名字拼寫錯誤等。

當你選擇一種格式風格時,思考它會對程式的可讀性和易理解性有什麼影響,而一旦選擇了一種風格,就要堅持使用

1.5 類簡介

C++最初的一個設計焦點就是能定義使用上像內建型別一樣自然的類型別。(class type)

習慣上,標頭檔案根據其中定義的類的名字來命名。通常用.h作為標頭檔案的字尾。標準庫標頭檔案通常不帶字尾。編譯器一般不關心標頭檔案名的格式,但有的IDE對此有特定要求

包含來自標準庫標頭檔案時,應該用<>包圍標頭檔案名。對於不屬於標準庫的標頭檔案,則用""包圍

從鍵盤反覆敲入記錄作為輸入,非常乏味。大多數OS支援檔案重定向,這種機制允許我們將標準IO與命名檔案關聯起來:
$ addItems <infile >outfile
假定$是IO提示符,我們的程式已經編譯為addItems.exe的可執行檔案(在UNIX中是addItems),則上述命令會從一個名為infile的檔案讀取記錄,並將結果寫入到outfile中,兩個檔案都位於當前目錄。

相關文章