C Primer筆記4 靜態成員類 IO庫

2021-09-07 01:48:22 字數 2161 閱讀 3381

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時,該靜態資料成員只能被定義一次,而且要被同類的所有物件共享。各個物件都擁有類中每乙個普通資料成員的副本,但靜態資料成員只有乙個例項存在,與定義了多少類物件無關。靜態方法就是與該類相關的,是類的一種行為,而不是與該類的例項物件相關。靜態資料成員的用途之一是統計有...