1.c++有三大特徵:封裝,繼承,多型
封裝:就是把普通的物件進行封裝,物件的屬性設為私有的,對外提供get和set方法,其他類只能通過get和set對物件屬性值進行操作。
其中封裝的三個訪問限定符:1.public:任意位置訪問;
2.protected: 本類,子類中訪問;
3.private: 本類中訪問;
繼承:是發生在兩個類之間,乙個類繼承另乙個類是說這個類屬於另乙個類,具有另乙個類的所有屬性和方法,同時它還可以有另乙個類不具備的方法和屬性。
多型:是建立在繼承的基礎上的,乙個父類物件可以產生多個不同的子類物件,根據這些子類物件的不同可以具備不同的方法,也就是說表現出了不同的形態即多型。
2.c++中struct也可以當類來使用(struct class)
結構體中的預設訪問限定符:公有都可以訪問,私有限定訪問。
3.成員方法的實現
<1>類中:內聯函式
<2>類外:普通函式
4.類中的6個預設函式
<1>建構函式:用來初始化物件的成員變數。
特點:
1. 函式名與類名相同
2. 沒有返回值
3. 新物件被建立時,由編譯器自動呼叫,且在物件的生命週期內僅呼叫
一次 4. 建構函式可以過載,實參決定了呼叫哪個建構函式
5. 無參建構函式和全預設的建構函式都認為是預設的建構函式,並且預設的建構函式只能有乙個
6. 有初始化列表(可以不用)
7. 如果沒有顯式定義時,在必要情況下,編譯器會合成乙個預設的建構函式
8. 對於單個引數建構函式,可以將其接受引數轉化成類型別物件。用explicit修飾建構函式,抑制由建構函式定義的隱式轉換,explicit關鍵字類內部的構建宣告上,在類的定義體外部的定義上不再重複。
<2>析構函式:與建構函式的功能相反,用於銷毀物件,由編譯器自動呼叫。
特點:
1. 析構函式在類名(即建構函式名)加上字元~
2. 析構函式無引數無返回值
3. 乙個類有且只有乙個析構函式。若未顯示定義,系統會自動生成預設的析構函式
4. 物件生命週期結束時,c++編譯系統系統自動呼叫析構函式
5. 注意析構函式體內並不是刪除物件,而是做一些清理工作
<3>拷貝建構函式:
函式名也為類名,只有單個形參,而且該形參是對本類型別物件的引用(常用const修飾),這樣的建構函式稱為拷貝建構函式。拷貝建構函式是特殊的建構函式,建立物件時使用已存在的同類物件來進行初始化,由編譯器自動呼叫
特性:
1. 對於建構函式的過載、建構函式的性質,拷貝建構函式均滿足
2. 引數必須使用類型別物件引用傳遞
3. 如果沒有顯式定義,必要情況下,系統會自動合成乙個預設的拷貝建構函式。預設的拷貝建構函式會依次拷貝類的資料成員完成初始化。若無必要,則編譯器會通過複製的方式來完成對物件的拷貝功能。
<4>賦值操作符過載:賦值操作符過載是操作符過載的一種
<5>取位址操作符過載: 賦值操作符過載是操作符過載的一種
<6>const修飾的取位址操作符過載:
當&過載為被const修飾的成員函式時,系統會預設地對返回值加上const修飾。
若對呼叫此過載時,若不顯式呼叫自己定義的取位址過載,則系統會呼叫它自己預設的函式
1.開闢記憶體
2.記憶體空間進行初始化,呼叫建構函式(賦資源)
3.構造析構函式:
析構函式是不可以過載的;
4.拷貝建構函式:用已存在的物件生成乙個相同型別的新物件
預設的拷貝建構函式是乙個淺拷貝(拷貝的函式與原函式指向同一記憶體,釋放後,原函式的指標就變為了野指標)
5.賦值運算賦過載函式:把乙個已存在的物件賦給相同型別的已存在物件
實現過程:判斷自賦值;釋放舊資源;開闢新資源;賦值;
在呼叫類的過成中會產生臨時量
臨時量:1.內建型別生成的臨時量為常量(在暫存器中)
2.自定義型別生成的臨時量為變數(在記憶體中)
3.隱式生成的臨時量為常量
4.顯示生成的臨時量為變數
生成的臨時物件:
生存週期:表示式結束
臨時物件的優化:
生成臨時物件的目的:生成新物件(以生成臨時物件的方式生成新物件)
引用能提公升臨時物件的生存週期
把臨時物件提公升和引用變數相同的生存週期
C 類和物件(中)
一 類的六個預設成員函式 1 初始化和清理。建構函式完成初始化,析構函式完成清理 2 拷貝複製 拷貝建構函式使用同類物件建立物件,賦值過載是把乙個物件賦值給另乙個物件 3 取位址和過載 主要是對普通物件和const物件取位址 二,建構函式 1 建構函式是乙個特殊成員函式,名字和類名相同,建立類型別物...
C 類和物件(中)
define crt secure no warnings 1 includeusing namespace std include if 0 建構函式是乙個特殊的成員函式,名字與類名相同,建立類型別物件時由編譯器自動呼叫,保證每個資料成員 都有 乙個合適的初始值,並且在物件的生命週期內只呼叫一次 ...
C 類和物件(中)
目錄 1.建構函式 2.析構函式 3.拷貝建構函式 4.賦值運算子的過載 5.const成員 6.取位址及const取位址操作符過載 乙個類中,如果沒有任何成員,稱為空類。任何乙個類中,都會包含6個預設的成員函式,即使是空類也會自動生成6個預設成員函式,如下為類中的6個預設成員函式 注意 預設成員函...