C++學習筆記2020-1

在C語言中可以通過結構體名來定義變量,在 C++ 中可以通過類名來定義變量。不同的是,通過結構體定義出來的變量還是叫變量,而通過類定義出來的變量有了新的名稱,叫做對象(Object)。

對象是類的一個實例(Instance)

iostream.h:用於控制檯輸入輸出頭文件。
fstream.h:用於文件操作的頭文件。
complex.h:用於複數計算的頭文件。

在C語言中,動態分配內存用 malloc() 函數,釋放內存用 free() 函數。
C++又新增了兩個關鍵字,new 和 delete:new 用來動態分配內存,delete 用來釋放內存。

和 malloc() 一樣,new 也是在堆區分配內存,必須手動釋放,否則只能等到程序運行結束由操作系統回收。

一般是將非常短小的函數聲明爲內聯函數。
由於內聯函數比較短小,我們通常的做法是省略函數原型,將整個函數定義(包括函數頭和函數體)放在本應該提供函數原型的地方。

參數列表不同包括參數的個數不同、類型不同或順序不同,僅僅參數名稱不同是不可以的。函數返回值也不能作爲重載的依據。

at() 是 string 類的一個成員函數,它會根據下標來返回字符串的一個字符。與[ ]不同,at() 會檢查下標是否越界,如果越界就拋出一個異常;而[ ]不做檢查,不管下標是多少都會照常訪問。

捕獲異常的語法爲:

try{

    // 可能拋出異常的語句

}catch(exceptionType variable){

    // 處理異常的語句

}

C++ 規定,派生類虛函數的異常規範必須與基類虛函數的異常規範一樣嚴格,或者更嚴格。只有這樣,當通過基類指針(或者引用)調用派生類虛函數時,才能保證不違背基類成員函數的異常規範。

C++ 規定,異常規範在函數聲明和函數定義中必須同時指明,並且要嚴格保持一致,不能更加嚴格或者更加寬鬆。

iostream 頭文件中定義了四個標準流對象,它們是 cin、cout、cerr 和 clog。
cin 對應於標準輸入流,用於從鍵盤讀取數據,也可以被重定向爲從文件中讀取數據。
cout 對應於標準輸出流,用於向屏幕輸出數據,也可以被重定向爲向文件寫入數據。
cerr 對應於標準錯誤輸出流,用於向屏幕輸出出錯信息,不能被重定向。
clog 對應於標準錯誤輸出流,用於向屏幕輸出出錯信息,不能被重定向。

cerr 和 clog的區別在於:cerr 不使用緩衝區,直接向顯示器輸出信息;而輸出到 clog 中的信息會先被存放到緩衝區,緩衝區滿或者刷新時才輸出到屏幕。

cout 可以被重定向,而 cerr 不能。所謂重定向,就是將輸入的源或輸出的目的地改變。例如,cout 本來是輸出到屏幕上的,但是經過重定向,本該輸出到屏幕上的東西就可以被輸出到文件中。

C++ 中常用的輸出流操縱算子在頭文件 iomanip 中定義。

多個標誌可以用|運算符連接,表示同時設置。

setw() 算子所起的作用是一次性的,即隻影響下一次輸出。每次需要指定輸出寬度時都要使用 setw()。
在讀入字符串時,setw() 還能影響 cin 的行爲。setw() 用於 cin 時,同樣隻影響下一次的輸入。

除了使用 cout.put() 函數輸出一個字符外,還可以用 putchar() 函數輸出一個字符。putchar() 函數是C語言中使用的,在 stdio.h 頭文件中定義,C++保留了這個函數,在 iostream 頭文件中定義。

從控制檯讀取數據,在控制檯中輸入特殊的控制字符就表示輸入結束了:
1)在 Windows 系統中,通過鍵盤輸入時,按 Ctrl+Z 組合鍵後再按回車鍵,就代表輸入結束。
2)在 UNIX/Linux/Mac OS 系統中,Ctrl+D 代表輸入結束。
注意:不管是文件末尾,還是 Ctrl+Z 或者 Ctrl+D,它們都是結束標誌;cin 在正常讀取時返回 true,遇到結束標誌時返回 false,我們可以根據 cin 的返回值來判斷是否讀取結束。

get() 是 istream 類的成員函數,從輸入流中讀入一個字符,返回值就是該字符的 ASCII 碼。如果碰到輸入的末尾,則返回值爲 EOF。get() 函數不會跳過空格、製表符、回車等特殊字符,所有的字符都能被讀入。

peek() 是 istream 類的成員函數。
此函數返回輸入流中的下一個字符,但是並不將該字符從輸入流中取走——相當於只是看了一眼下一個字符,因此叫 peek。
cin.peek() 不會跳過輸入流中的空格、回車符。在輸入流已經結束的情況下,cin.peek() 返回 EOF。

在讀寫文件時,有時希望直接跳到文件中的某處開始讀寫,這就需要先將文件的讀寫指針指向該處,然後再進行讀寫。
1) ifstream 類和 fstream 類有 seekg 成員函數,可以設置文件讀指針的位置;
2)ofstream 類和 fstream 類有 seekp 成員函數,可以設置文件寫指針的位置。

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