文章目錄
- 1.進一步了解建構式
- 1.1建構式體賦值
- 1.2初始化串列
- 1.2.1是什么是初始化串列
- 1.2.2需要注意的幾點
- 1.3匿名物件
- 1.4explicit 關鍵字
- 2.靜態成員
- 2.1什么是靜態成員
- 2.2靜態成員的特性
- 3.C++11的成員宣告的時候進行賦值
- 4.友元
- 4.1友元函式
- 4.1.1友元函式是什么
- 4.1.2友元函式特性
- 4.1.3友元函式的使用場景
1.進一步了解建構式
1.1建構式體賦值
在創建物件時,編譯器會通過呼叫建構式,給物件中各個成員變數一個合適的初始值,如下圖代碼所示:

如上圖所示,盡管建構式被呼叫后,物件中已經有了一個初始值,但是這不能稱為類物件成員的初始化,因為呼叫建構式的時候就已經進行了物件成員的定義,建構式體內的陳述句只能將其稱之為賦初值,且初始化只能初始化一次,而建構式體內可以多次賦值

1.2初始化串列
1.2.1是什么是初始化串列
初始化串列是一個以冒號開始,接著是一個以逗號分隔的資料成員串列,每個成員變數后面跟一個放在括號中的初始值或運算式

1.2.2需要注意的幾點
1.每個成員變數在初始化串列中只能出現一次(只能進行一次定義初始化)
2.類中包含以下成員,必須在初始化串列的位置進行初始化(即必須定義的時候進行初始化的成員變數,必須使用初始化串列):
參考成員變數
const成員變數
自定義成員變數(該類沒有默認的建構式即無參的/編譯器默認的/預設的建構式)

3.盡量使用初始化串列初始化

4.成員變數在類中宣告次序就是在其初始化串列中的初始化順序,與其在初始化串列中的先后次序無關

1.3匿名物件
在定義時,不需要寫物件的名字,宣告周期只有一行,常用于測驗

1.4explicit 關鍵字
建構式不僅可以構造和初始化物件,對于單個引數的建構式,還具有型別轉換的作用,用關鍵字explicit修飾的建構式,將會禁止單參建構式的隱式轉換

2.靜態成員
2.1什么是靜態成員
宣告為static的類成員稱為類的靜態成員
用static修飾的成員變數,稱之為靜態成員變數;用static修飾的成員函式,稱之為靜態成員函式,
靜態的成員變數一定要在類外進行初始化
2.2靜態成員的特性
1.靜態成員為所有類物件所共享,不屬于某個具體的實體
2.靜態成員變數必須在類外定義,定義時不添加static關鍵字
3.類靜態成員即可用類名::靜態成員或者物件.靜態成員來訪問
4.靜態成員函式沒有隱藏的this指標,不能訪問任何非靜態成員
5.靜態成員和類的普通成員一樣,也有public,protected,private三種訪問級別,也可以具有回傳值
接下來我用一個例子來決議下靜態成員的特性:實作一個類,計算程式中創建出了多少個物件

3.C++11的成員宣告的時候進行賦值
C++11支持非靜態成員變數在宣告的同時進行初始化賦值,需要注意的是,這里不是初始化,而是給宣告的成員變數預設值

4.友元
友元分為:友元函式和友元類
友元提供了一種突破封裝的方式,有時候提供了便利,但是友元會增加耦合度,破壞了封裝,所以友元不宜多用
4.1友元函式
4.1.1友元函式是什么
友元函式可以直接訪問類的私有成員,它是定義再類外部的普通函式,不屬于任何類,但需要在類的內部宣告,宣告的時候需要加上friend關鍵字
4.1.2友元函式特性
a.友元函式可以訪問類的私有和保護成員,但不是類的成員函式
b.友元函式不能用const修飾
c.友元函式可以在類定義的任何地方宣告,不受訪問限定符限制
d.一個函式可以是多個類的友元函式
e.友元函式的呼叫與普通函式的呼叫和原理相同
4.1.3友元函式的使用場景

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/267076.html
標籤:java
上一篇:兩道簡單的藍橋杯問題
