1.靜態成員類
static成員變數與函式
static成員變數:必須在類外初始化。(const或引用型別變數必須在建構函式初始化列表裡初始化)
static成員函式:
不依賴於類。相當於類裡的全域性函式(能夠由該類物件呼叫,也能夠 類名::函式名()的形式呼叫)
不包括this指標。不能宣告為const,宣告為const表示不會改變物件。而static成員函式存在於不論什麼物件之外。
相當於把訪問範圍限制在所在的類中!注意:不能訪問類中非static成員變數以及非static成員函式。
注意:儘管靜態成員不屬於類的某個物件。但我們仍然能夠使用類的物件、引用、指標來訪問靜態成員。
樣例:
#include using namespace std;
class a
void print()const
static void printn()
private:
int age;
static int n;
};int a::n = 20;
int main()
2.io庫
標頭檔案 型別
iostream istream wistream從流中讀取資料
ostream wostream向流中寫入資料
iostream wiostream讀寫流
fstream ifstream wifstream從檔案裡讀取資料
ofstream wofstream向檔案裡寫入資料
fstream wfstream讀寫檔案
sstream istringstream wistringstream 從string讀取資料
ostringstream wostringstream向string寫入資料
stringstream wstringstream 讀寫string
詳細見例如以下關係圖
緩衝區:
每乙個輸出流都管理乙個緩衝區,用來儲存讀寫的資料。導致緩衝區的重新整理原因:
除了endl,還有flush、ends兩個操作符能夠重新整理緩衝區,例如以下所看到的:
cout << "scott" << endl;//輸出scott和乙個換行符。然後重新整理緩衝區
cout << "scott" << flush;//輸出scott 然後重新整理緩衝區
cout << "scott" << ends;//輸出scott和乙個空字元 然後重新整理緩衝區
注意:假設程式異常終止。輸出緩衝區是不會被重新整理的!
檔案輸入輸出:
要想讀寫檔案,能夠定義乙個檔案流物件。將其物件與檔案關聯起來。
建立流物件時。我們能夠提供檔名稱,假設提供了檔名稱。則open函式會被自己主動呼叫。
ifstream in(s);//構造乙個ifstream並開啟檔案
ofstream out;//並未關聯不論什麼檔案
當fstream物件被銷毀時,close會自己主動呼叫。
#include #include #include using namespace std;
int main()
return 0;
}
課後習題:
#include #include #include #include using namespace std;
int main()
cout << "***************==" << endl;
for(vector::iterator i = vecstr.begin(); i!=vecstr.end(); ++i)
return 0;
}
c primer 12 6 靜態類成員
1 定義靜態類成員的原因 1.1 有時候,對某個類的所有例項化物件 需要訪問同乙個全域性物件 1.2 但是使用全域性物件會破壞封裝,因此使用靜態類成員。2 使用靜態類成員的優點 2.1 靜態成員的可見性為類範圍,因此避免了與其他類的成員或全域性物件的名字衝突 2.2 靜態成員可以使用private關...
C primer 類成員指標
1 宣告成員指標 有時我們希望直接獲取成員的指標,然後從乙個物件或別的物件獲得該成員,這時就需要用到成員指標。成員指標,包含類的型別以及成員的型別。成員指標只針對類的非static成員。static類成員不是任何物件的組成部分,所以不需要特殊語法來指向static成員,static成員指標是普通指標...
類靜態成員和類靜態成員函式
當將類的某個資料成員宣告為static時,該靜態資料成員只能被定義一次,而且要被同類的所有物件共享。各個物件都擁有類中每乙個普通資料成員的副本,但靜態資料成員只有乙個例項存在,與定義了多少類物件無關。靜態方法就是與該類相關的,是類的一種行為,而不是與該類的例項物件相關。靜態資料成員的用途之一是統計有...