在定義類的任何物件之前,必須首先給出這個類的宣告。
類的私有成員具有類範圍性質:類的私有成員僅能由類的成員函式訪問。
兩種定義是等價的。第一種方式中x預設地定義為私有成員
class z和class z
unsigned getage() const;//
private:
unsigned age;
};void person::setage( unsigned n )
unsigned person::getage() const
兩種不同定義的方式
如果定義在main函式裡面,藍色定義有問題:總是顯示非法定義,拿出來作為全域性變數和函式就沒有問題。綠色的定義方式為內聯函式。
6.通過在進行成員函式宣告的時候使用inline關鍵字,可將原本定義在類宣告之外的成員函式強 制變成內聯函式。
7.一般情況下,應該採用引用方式進行物件的傳遞和返回,而不要採用傳值的方式來進行。這是 因為通過傳值方式來傳遞和返回物件時會降低效率並將面臨物件的拷貝操作,從而是資料增大,浪費記憶體。
兩者效率相同,但是引用方式的語法要簡練的多。
8.不要以引用方式在函式中返回乙個區域性auto變數。因為函式返回的時候這個變數已經不在了。
9.通常,如果乙個物件通過引用方式傳到函式f中,而函式f又不會通過修改物件中的資料成員的值改變物件的狀態,
那麼最好將f的引數標記為const,可以預防對引數的誤寫,同時有些編譯器還可以對這種情況進行優化。
10. 如果乙個成員函式不需要直接或者間接地改變該函式所屬物件的任何資料成員,那麼最好將這個成員函式標記為const。
eg:int get() const-----唯讀函式
可以預防對該函式所屬資料成員的誤寫。
11. 乙個const成員函式只能呼叫其他const成員函式。呼叫非const成員函式可能會間接的改變物件的狀態。
12. 建構函式不能有返回型別。構造函式引數的數量和型別不同。預設構造不帶引數。建構函式最大的特點:函式名與類名相同,沒有返回型別。
class stack{
stack(){initiative();}預設建構函式中呼叫了init成員函式。
}
13. 多數情況下,編譯器為類生成乙個共有的預設建構函式,只有下面兩種情況例外:
• 乙個類顯式的宣告了任何建構函式
• 乙個類宣告了乙個非公有的預設構造引數(定義在private裡)
14. 拷貝建構函式:建立乙個新的物件,此物件是另外乙個物件的拷貝品
如果類的設計者不提供拷貝建構函式,編譯器會自動生成乙個:將源物件所有資料成員的值逐一賦值給目標物件相應的資料成員。拷貝前後位於不同的位址空間,儘管他們有相同的成員變數值。
15. 如果拷貝建構函式是私有的,頂層函式和其他類的成員函式就不能通過傳值來傳遞和返回該類的物件,因為這兩個操作都需要呼叫拷貝建構函式。涉及到動態問題的時候預設拷貝函式會有問題。都是引用型別。
class abc
//default
abc(const abc& def)
void getnum()
private:
int num;
};int main()
這部分還沒怎麼看懂。先留個鏈結。
16. 轉型建構函式可以進行隱式型別轉換
void f(person p);
string s = "abc";
f(s);
如果person中有這樣的轉型建構函式
person(string s);
那麼就可以通過。
explicit person(const string& n)
關閉這種轉換。
17. 只能用初始化列表對const型別變數進行初始化
18. 析構函式:摧毀物件,出現情況:
+ 以某個類作為資料型別的變數超出其作用範圍
+ 用delete操作符刪除動態分配的物件
in 開啟檔案用於讀取
out 開啟檔案用於寫入
ate 開啟檔案並移到末尾
trunc 若檔案已存在,開啟檔案並擷取流(清除原來的資料)
binary 以二進位製流方式開啟檔案
20. 在類宣告內部宣告的static資料成員必須在任何程式塊之外定義。而且,static成員不影響類的sizeof。
21. 如果將成員函式內的某個區域性變數定義為靜態變數,該類的所有物件在呼叫這個成員函式時,將共享這個變數。
22. 在成員函式內部可以用指標常量this來訪問與成員函式的呼叫相關聯的物件。this指標是乙個常量,它不能作為賦值,遞增,遞減等運算的目標物件。this也只能在非static成員函式中才有效。
23. 如果要在類宣告之外定義inline函式,關鍵字inline只能出現在該函式的宣告中。
24. 在static成員函式內使用this是錯誤的
C 初學筆記
判斷文字是否為數值型 string str1 textbox1.text string str2 textbox2.text int i1,i2 if int.tryparse str1,out i1 if int.tryparse str2,out i2 false if後面只有一句話,可以不用 ...
c 學習筆記(初學)
一 抽象和類 注意事項及一些要點技巧 1,使用 ifndef來訪問多次包含同乙個檔案,防止標頭檔案被重複引用。被重複引用 是指乙個標頭檔案在同乙個cpp檔案中被include了多次,這種錯誤常常是由於include巢狀造成的。比如 存在a.h檔案 include c.h 而此時b.cpp檔案匯入了 ...
C 初學筆記1
1.c編譯器是把c 轉換成計算機內部指令的程式。2.c 在c語言的基礎上嫁接了物件導向程式設計工具。物件導向程式設計是一門哲學,它通過對語言建模來適應問題,而不是對問題建模以適應語言 c 幾乎是c的超集,這意味著任何c程式差不多就是乙個c 程式。3.include告訴編譯器把stdio.h中的內容包...