類和物件(下)

2021-09-26 09:25:18 字數 1913 閱讀 3126

1.建構函式的初始化

#include

using namespace std;

class student

private:

int _id;

int _name;

};

對於上面這個類來說,呼叫建構函式的時候,物件中已經有了乙個類的初始值。但是不能將其當作類物件成員的初始化,建構函式體內的語句只能將其稱作賦初值,而不能將其稱作初始化,因為初始化只能初始化一次,而建構函式內部可以多次賦值
#include

using namespace std;

class student

private:

int _id;

int _name;

};

初始化列表:以乙個冒號開始,接著是乙個以逗號進行分隔的資料列表,每個成員變數上跟乙個放在括號內部的初始值或者表示式。

注意:每個成員變數在初始化列表中只能初始化一次。

如果類中包含(引用成員變數,const成員變數,類型別成員)必須在初始化列表的位置進行初始化

盡量使用初始化列表初始化,因為不管你是否使用初始化列表,對於自定義型別成員變數,一定會先使用初始化列表初始化。

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

2.explicit關鍵字

c++中的explicit關鍵字只能用於修飾只有乙個引數的類建構函式, 它的作用是表明該建構函式是顯示的, 而非隱式的, 跟它相對應的另乙個關鍵字是implicit, 意思是隱藏的,類建構函式預設情況下即宣告為implicit(隱式).

#includeusing namespace std;

class student

private:

int _id;

};int main()

用explicit修飾建構函式,將會禁止單參建構函式的隱式型別轉換。

3.static成員

1.概念:

宣告為static的類成員稱為類的靜態成員,用static修飾的成員變數,稱之為靜態成員變數;用static修飾的成員函式,稱之為靜態成員函式。靜態的成員變數一定要在類外進行初始化。

2.特性

靜態成員為所有類物件所共享,不屬於某個具體的例項

靜態成員變數必須在類外定義,定義時不新增static關鍵字

類靜態成員即可用類名::靜態成員或者物件.靜態成員來訪問

靜態成員函式沒有隱藏的this指標,不能訪問任何非靜態成員

靜態成員和類的普通成員一樣,也有public、protected、private 3種訪問級別,也可以具有返回值,const修飾符等引數

4.友元

友元分為:友元函式和友元類

1.友元函式

class student

ostream& operator<<

(ostream& _cout,

const student& d)

private:

int _id;};

intmain()

友元函式可以直接訪問類的私有成員,它是定義在類外部的普通函式,不屬於任何類,但需要在類的內部宣告,宣告時需要加friend關鍵字。

注意:友元函式可訪問類的私有成員,但不是類的成員函式

友元函式不能用const修飾

友元函式可以在類定義的任何地方宣告,不受類訪問限定符限制

乙個函式可以是多個類的友元函式

友元函式的呼叫與普通函式的呼叫和原理相同

2.友元類

友元類的所有成員函式都可以是另乙個類的友元函式,都可以訪問另乙個類的非公有成員。

類和物件(下)

1.什麼是建構函式 建構函式是一種隨著物件建立而被呼叫的公有成員函式,有且僅在定義物件時自動執行一次,它的主要用途是為物件做初始化。2.建構函式的特點 3.初始化列表 格式 以乙個冒號開始,接著是乙個逗號分割的資料成員列表,每個 成員變數 後面跟乙個放在括號中的初始值或表示式。注意點 1.每個成員在...

類和物件(下)

1.建構函式體賦值 因為初始化初始化一次而建構函式可以進行多次賦值,所以不能稱為初始化。2.初始化列表 以乙個冒號開始,接著是乙個以逗號分隔的資料成員列表,每個 成員變數 後面跟乙個放在括 號中的初始值或表示式 1 每個變數在初始化列表中只能出現一次 2 類中包含以下成員,必須放在初始化列表位置進行...

C 類和物件(下)

2.static成員 3.c 11的成員初始化新玩法 4.友元 5.內部類 如下 class date private int year int month int day 如下 class date private int year int month int day 無explicit 如下 c...