C++第6版學習小結之前三章:開始學習c++、處理數據

2020-08-12 15:50:45

開始學習c++

  1. cin.get()-----讀取下一次鍵擊,讓程式等待直到按下Enter鍵。
  2. 名稱空間----一項c++特性,讓編寫大型程式以及將多個廠商現有的程式碼組合起來的程式時更容易,還有助於組織程式。如A,B兩個不同廠商各自封裝好的產品中都有memeda()函數時,使用memeda()函數時,編譯器不知道是哪個版本。廠商可以將其產品封裝在名稱空間單元中,就可以區分了,如A,B各自封裝的名稱空間單元爲a和b。則使用時可以用a::memeda()和b::memeda()區分。使用時應在程式開頭宣告,如using namespace a;常見的還有using namespace std;
  3. 在c++中分號表示了語句的結尾。回車的作用就和空格或製表符相同,也就是說,在c++中,通常可以在能夠使用回車的地方使用空格,反之亦然。既可以那一條語句放在幾行上,也可以把幾條語句放到同一行上。
  4. c++可以使用標準c中的輸入輸出函數,只需包含c語言標頭檔案stdio.h檔案。
  5. c++程式通常必須包含一個main()的函數(寫法只能是main())。程式執行時通常從main()函數開始。如果沒有main(),程式將不完整,編譯器會指出未定義main()函數。也存在哪一些例外如,在Windows程式設計中,編寫的動態鏈接庫(DLL)模組,這是其他Windows程式可以使用的程式碼。由於DLL模組不是獨立的程式,因此不需要main()函數。用於專用環境程式—機器人中控制晶片可能不需要main()函數。但常規的獨立程式都需要。
  6. cout和printf相比,cout有明顯的優點,能夠識別型別的功能表明,其設計更靈活、更好用。另外,它是可延伸的。也就是說可以重新定義"<<"運算子,使cout能夠識別和顯示所開發的新數據型別。
  7. c++原始碼風格:
    雖然c++在格式方面賦予了您很大的自由,但如果遵循合理的風格 ,程式將更便於閱讀。有效但難看的程式碼不會令人滿意 。它遵循了下述規則。
    1 每條語句佔一行;
    2 每個函數都有一個開始花括號和一個結束花括號,這兩個花括號各 佔一行;
    3 函數中的語句都相對於花括號迸行縮排 ;
    4 與函數名稱相關的圓括號周圍沒有空白 ;
    前三條規則旨在確保程式碼消晰易讀;第四條規則幫助區分函數和一些也使用圓括號的c++內建結構(如回圈)。
    此外,變數必須宣告。

處理數據

  1. 8位元位元組char可以表示基本字元集,wchar_t(寬字元型別)可以表示擴充套件字元集。後者是一個整數型別,有足夠空間,可以表示系統使用的最大擴充套件字元集。
  2. cin和cout將輸入和輸出看作是char流,因此不適於用來處理wchar_t型別。iostream標頭檔案的最新版本提供作用相似的工具即wcin和wcout。另外可以通過加上字首L來指示寬字元常數和寬字串。下列程式碼將字母P的wchar_t版本儲存到變數bob中,並顯示單詞tall的wchar_t版本:wchar_t bob =L’P’;wcout << L「tall」 << endl。
  3. c++新增型別:char16_t和char32_t。前者是無符號的長16位元,後者也是無符號的長32位元。c++使用字首u表示char16_t字元常數和字串常數,如u’C’和u’be good’;並使字首U表示char32_t常數,如U’R’和U「dirty rat」。
  4. 任何數位值或指針都可以被隱式轉換爲bool值。任何非零值都被轉化爲true,零被轉化爲false。
  5. const修改變數宣告和初始化後,編譯器將不允許再修改該常數的值。const比#define好。首先它能夠明確指定型別。其次可以將定義限制在特定的函數或檔案中。第三,可以將const用於更復雜的型別。
  6. 浮點數的優缺點。可以表示整數之間的數。其次由於有縮放因子,可以表示的範圍大得多。缺點,運算速度慢,精度將降低。
  7. 型別轉換。如果兩個運算元級別不一致,轉換時將低的轉換爲高的型別。
  8. 強制型別轉換。強制型別轉換不會修改變數本身,而是建立一個新的、指定型別的值。強制轉換的通用格式如下:
    (typeName) value
    typeName (value)
    第一種格式來自c語言,第二種來自c++。新格式的想法是,要讓強制型別轉換就像是函數呼叫。
  9. static_cast<>可用於將值從一種數值型別轉換爲另一種數值型別,例如,可以像下面 下麪這樣將thorn轉換爲long型別:static_cast <long> (thorn)。推而廣之可以得到static_cast <typeName> (value)。運算子static_cast <>比傳統強制型別轉換更嚴格。