C 類 物件 模板與STL

2021-10-03 09:40:41 字數 2599 閱讀 8057

類:乙個特殊的概念,再c++語言中是乙個新的資料型別,可以是對同一型別事物進行抽象處理,也可以是乙個層次結構中的不同層次節點。

類的宣告與定義:

類中的成員函式的定義方法:1.將類的成員函式都定義在類體內;

2.將類的成員函式的實現放在類體外,但如果類成員函式定義在類體外,需要用到域運算子「::」;(當多個原始檔都引用該標頭檔案時,會報錯「重複定義」)

3.可以將函式的宣告與定義放在不同檔案裡,在「.h」標頭檔案中放函式的宣告,在「.cpp」檔案中放函式的實現。

類的資料成員初始化:通過建構函式

物件的構造:1.無參構造:a.棧空間構造,不需要加括號,加括號報錯:(request for member 『  』 in 『  』, which is of non-class type 『  』);b.堆空間構造,定義物件指標,動態分配空間,需要加括號

person p1;

person *p2=new person();

物件的成員引用:1.成員引用方式," . ";

2.物件指標方式, " -> ";

類成員的屬性:public、private(預設狀態類成員)、protected。public對外可見;private只對內可見;protected對內和派生類可見。作用範圍:直到下一次出現另乙個關鍵字為止。

內聯成員函式:inline

靜態類成員:關鍵字static,靜態資料成員,靜態成員函式。如果將類成員定義為靜態類成員,則允許使用類名直接訪問。既可以通過物件訪問,也可通過類名訪問(類名和域運算子「∷」)。在乙個類中,靜態資料成員是被所有的類物件所共享的,無論定義多少個類物件,類的靜態資料成員只有乙份。非靜態成員函式有this指標,靜態成員函式並不屬於某一物件,它與任何物件都無關,靜態成員函式沒有this指標,由此決定了靜態成員函式不能訪問本類中的非靜態成員。

隱藏的this指標:通過類中隱藏的this指標,物件共享類中的成員函式。指向被呼叫物件的指標,使用者可以顯式地使用this指標訪問資料成員。

巢狀類:在乙個類中定義另乙個類。外圍類不能訪問巢狀類的私有成員。內部的巢狀類只允許外圍類使用,在其他類域或則作用域中是不可見的,但是可以通過外圍類的作為限定符「::」來定義巢狀類物件。

區域性類:類的定義放置在函式中。

友元:友元函式與友元類。友元類:當使用者希望另乙個類能夠訪問當前類的私有成員時,可在當前類中將另乙個類作為友元類【friend class 類名】,這樣在另乙個類中就能訪問當前類的私有成員。

命名空間:命名空間可消除在乙個應用程式中多個檔案中可能存在同名的全域性物件。作用域限定符「 :: 」

繼承:就是用已有的資料型別建立新的資料型別,並保留已有資料型別的特點,以舊類為基礎建立新類,新類包含了舊類的資料成員和成員函式。【class 派生類名識別符號:[繼承方式] 基類名識別符號】

繼承方式:公有型(public)、保護型(protected)和私有型(private)。公有型派生表示

建構函式訪問順序:

子類顯示呼叫父類建構函式:

子類隱藏父類的成員函式:

模板:分為函式模板與類模板。編譯器不能為其生成可執行**。

模板函式:函式模板生成實際可執行的函式成為模板函式。函式模板是乙個「框架」。模板函式是函式模板中的型別引數例項化後生成的函式。

stl:standard template library,為標準化元件提供類模板進行泛型程式設計。特點:通用性好、效率高、資料結構簡單、安全機制。是一些容器的集合,這些容器在演算法庫的支援下使程式開發變得更加簡單和高效。

templatetype sum(type x,type y)

其他概念:物件名陣列、物件名指標、引用形式的物件名、建構函式、複製建構函式、析構函式、「 :」運算子(表示基類和派生類之間的繼承關係)、

tips:1.模擬結構體增加了運算元據的行為,也就是函式;

2.另乙個類的物件可以作為該類的成員,但是自身類的物件不能作為該類的成員,但是自身類的指標或引用又是可以作為該類的成員。

3.定義類結構體和定義結構體時花括號後要有分號;

4.存放類的標頭檔案和實現檔案最好和類名相同。

5.類的資料成員不可以在類的宣告中初始化;

6.建構函式主要在物件建立時,給物件中乙個成員資料賦值,主要目的就是初始化物件。析構函式的功能是用來釋放乙個物件,在物件刪除前,用它來做一些清理工作,它與建構函式的功能正好相反。

7.建構函式和析構函式不能使用return語句返回值,不用加上關鍵字void.

8.在定義靜態資料成員時,通常需要在類體外部對靜態資料成員進行初始化;

9.如果某乙個物件修改了靜態資料成員,其他物件的靜態資料成員也將改變;

10.靜態資料成員可以是當前類的型別,而其他資料成員只能是當前類的指標或應用型別;

11.成員函式指定預設引數,預設值可以是類的靜態資料成員,普通的資料成員則不能作為成員函式的預設引數;

12.類的靜態成員函式只能訪問類的靜態資料成員,而不能訪問普通的資料成員;

13.每個物件都有自己的資料成員,不過成員函式卻是每個物件共享的。

14.在類模板中可以定義靜態的資料成員,類模板中的每個例項都有自己的靜態資料成員,而不是所有的類模板例項共享資料成員。同一型別的模板例項,其靜態資料成員都是共享的。

C 物件導向實驗三 模板與STL

掌握模板函式和模板類的定義 例項化,學會應用模板來處理函式呼叫面臨的不同的資料型別。理解模板類的定義和例項化時的方法。複習棧的出棧和入棧的相關操作。內容1 使用函式模板,求兩個數的最大值。例如 max 3,5 則輸出5 max 3 5 則輸出 5 max 3.0,5.0 則輸出5.0 max 3 5...

知識摘要 物件導向C 模板與STL

模板 templete class b 模板類可以作為乙個資料型別出現在參數列中 模板類必須至少有乙個類引數,還可以有非類引數型別的引數,叫做函式型別引數 用具體資料型別代替模板頭中的類引數,並用具體的資料代替模板頭中的函式型別引數可以例項化乙個模板類 stl 容器 演算法 迭代器 序列式容器 ve...

STL 類模板

1.模板 模板裡面也可以有非型別的引數,原則上只能是整數,而且是字面量 字面量在編譯時就確定下來。也可以有預設值 template stacks 一般的型別使用模板就可以搞定,特殊的型別就使用特化 想檢視實際替換時是什麼型別,這就需要執行時型別識別函式了typeid 最好不要把模板的宣告與定義分開,...