C 學習筆記(三)

2021-04-12 12:05:26 字數 3725 閱讀 4432

c++

運算子過載

(1)過載運算子的運算順序和優先順序不變,但引數和返回型別是可以重新說明的。

(2)c++

規定,運算子中,引數說明都是內部型別的,不能過載,如:

int* operator+(int, int*);

(3)c++

還規定了「.、::、.*、

->

、?:」這五個運算子不能過載,也不能創造新的運算子,如◎、#

(4)c++

規定:=

、()、

、->

這四種運算子必須為成員形式。

過載增量運算子

1、c++

increase& operator++()     //

前增量

increase operator++(int)    //

後增量,

int只是為了區別前增量和後增量,沒有任何作用

2、前增量運算子返回引用,後增量運算子返回值。

賦值運算子

1.像拷貝建構函式一樣,

c++也預設提供賦值運算子,同時也存在淺拷貝和深拷貝的問題。什麼時候淺拷貝不合適,就應提供賦值運算子。

2.如果賦值運算子說明為保護或私有的,則可以將賦值操作限定在累得作用域範圍,防止應用程式中使用賦值操作。

i/o

i/o

標準流類

cincout

cerr

clog 鍵盤

螢幕 螢幕

印表機

檔案流類

檔案輸出類

ofstream

常用的建構函式:

ofstream::ofstream(char* filename, int mode = ios::out, int prot = filebuf::openprot)

mode

是開啟方式,

prot

是檔案保護方式

mode標誌

含義

ios::ate

ios::in

ios::out

---------------

ios::trunk

ios::nocreate

ios::noreplace

----------------

ios::binary

如果檔案存在,輸出內容加在檔案末尾

具有輸入能力(

ifstream

預設)

具有輸出能力(

ofstream

預設)

-------------------------------------------

如檔案存在,清除檔案內容(預設)

如檔案不存在,返回錯誤

如檔案存在,返回錯誤

----------------------------------------------

以二進位制開啟檔案

prot標誌

含義

filebuf::openprot

filebuf::sh_none

filebuf::sh_read

filebuf::sh_write

相容共享方式

獨佔,不共享

允許讀共享

允許寫共享

1、引數filename

的檔名要說明其路徑,其中斜槓要雙寫,因為編譯器理解下的斜槓是字元轉換符。

2、要檢查檔案是否開啟,則判斷

fail()

成員函式:

ofstream myf(「myname」);

if (myf.fail())

串流類

1.串流類不是標準裝置,所以沒有

cout

那樣預先定義的全域性物件。

2.要定義乙個串流類物件,須提供字元陣列和陣列大小。

3.類istrstream

用於執行串流輸入,最有用的建構函式為:

istrstream::istrstream(const char* str)

istrstream::istrstream(const char* str, int size) 4.

類ostrstream

用於執行串流輸入,最有用的建構函式為:

ostrstream::ostrstream(char* str, int size, int prot = ios::out)

i/o成員函式

getline(char* line, int size, char = 『/n』)

get()

get(char*, int , char delim = 『/n』)

put()

過載插入運算子

ostream&

operator<<(

ostream& oo

, rmb& d)

過載模板函式

如果函式的名字與函式模板相同,但操作不同,就有必要用過載的方法將它們分開。編譯程式在處理這種情況時,首先匹配過載模板,然後再尋求模板的匹配。

異常處理:1、

try程式塊之後可以出現任意數量的

catch

程式塊,但是

try程式塊之前不許出現

catch

程式塊。

2、catch

程式塊資料型別之後的引數名是可選的:

catch(double)

3、如果乙個函式拋擲了乙個異常,但是在異常處理函式的呼叫鏈中找不到與之匹配的

catch

塊,則改程式通常以

abort()

函式呼叫終止。

4、拋擲異常與異常處理程式之間,是按資料型別的嚴格匹配來捕獲的,不允許型別轉換。預設異常處理型別為

」…」。

5、對於類的派生關係,按照下列規則捕獲異常:

a)異常處理的資料型別是公有基類,拋擲異常的資料型別是派生類

b)異常處理的資料型別是指向公有基類的指標,拋擲異常的資料型別是指向派生類的指標

C 學習筆記(三)

chapter 3 函式和類的自頂向下設計 1 乙個程式的開發過程 1.問題規範 2.分析 資料需求 3.設計 初始演算法 演算法精化 4.實現 5.測試 2 重要工具 結構圖 3 分析,設計程式時,甚至對任何問題來說,我們都要由大到小,層層分解,由乙個大問題分割成多個相關 的小問題,一口乙個蛋糕是...

C 學習筆記(三)

attributes field modifiers type variable declarators 域的修飾符field modifiers可以是 靜態域和非靜態域 下面的例子清晰的反映了二者之間的區別 域的初始化 如果在類中,沒有顯式的對域進行初始化,系統將賦予其乙個預設值。域的預設初始化分...

C 學習筆記 三

c 學習筆記 三 by heiyeluren 學習 visual c 入門經典 學習筆記 1.類的定義和繼承 定義乙個類使用class關鍵字 class class1 預設定義的類是只能本工程中的其他類和函式才能訪問的,我們也可以使用顯式的方式定義我們的類是私有的 internal class cl...