C 特殊成員

2021-09-28 16:40:36 字數 3477 閱讀 7149

必須採用初始化引數列表的方式進行初始化

const資料成員不能被改變

寫法:const放在引數列表的後面

常成員函式可以形成過載

常成員函式不能修改基本資料成員

示例:

#include

#include

using

namespace std;

/* const資料成員

1.必須採用初始化引數列表的方式進行初始化

2.const資料成員不能被改變

const成員函式

1.寫法:const放在引數列表的後面

2.常成員函式可以形成過載

3.常成員函式不能修改基本資料成員

const物件

*/class

boyfriend

void

print()

void

print()

const

//常成員函式的寫法:const放在引數列表的後面

void

printdata()

//兩個萬金油函式基本上都是const屬性

//加上const限定後函式更具有針對性和限定性,以防在寫乙個功能時不經意間對資料成員進行修改

//但是我們加上const限定後會對我們的操作有乙個約束。

intsize()

const

intempty()

const

;protected

://const成員

const string name;

int age;};

//常成員函式的類外實現

int boyfriend::

empty()

const

intmain()

必須在類外初始化(不需要static修飾)且只能被初始化一次

可以理解為靜態資料成員不屬於物件,屬於類 cosnt是所有的物件共有的

靜態資料成員的呼叫不需要物件,但是許可權限定詞依然有效

寫法:static放在前面 static 函式型別 函式名(引數列表)或者 函式型別 static 函式名(引數列表)

static成員函式不能過載

靜態成員函式的呼叫不需要物件

靜態成員函式的類外實現不需要新增static

除了靜態成員函式和靜態資料成員不需要物件去訪問外其他的任何類中成員都需要物件去訪問

示例:

#include

#include

using

namespace std;

/* static 資料成員

1.必須在類外初始化(不需要static修飾)且只能被初始化一次

2.可以理解為靜態資料成員不屬於物件,屬於類 cosnt是所有的物件共有的

3.靜態資料成員的呼叫不需要物件,但是許可權限定詞依然有效

static 成員函式

1.寫法:static放在前面 static 函式型別 函式名(引數列表)或者 函式型別 static 函式名(引數列表)

2.static成員函式不能過載

3.靜態成員函式的呼叫不需要物件

4.靜態成員函式的類外實現不需要新增static

*/class

girlfriend

void

print()

static

void

printdata

(girlfriend girl)

static

void

printdata2()

;static

int count;

protected

: string name;

int age;};

//在類初始化時不需要static修飾,但是類的限定還是要寫的

int girlfriend::count =0;

//4.靜態成員函式的類外實現不需要新增static

void girlfriend::

printdata2()

void

print()

int g_num =1;

intmain()

友元:賦予物件打破許可權限定

友元不具有對稱性和傳遞性

友元函式和友元類放在類中任何位置都是可以的,因為他並不是屬於類的

友元函式不屬於類

類外實現,不需要friend關鍵字,並且不需要類名以限定

宣告乙個類是另乙個類的友元類

** 示例:**

#include

#include

using

namespace std;

/* 友元函式和友元類放在任何位置都是可以的,因為他並不是屬於類的

友元不具有對稱性和傳遞性

友元:賦予物件打破許可權限定

1.友元函式

1.1友元函式不屬於類

1.2類外實現,不需要friend關鍵字,並且不需要類名以限定

2.友元類

2.1宣告乙個類是另乙個類的友元類

*///

class

mmint num;

protected

:void

print()

friend

void

printdata()

;friend

void

printdata

(mm mm)

string name;

private

:int age;};

類外實現,不需要friend關鍵字,並且不需要類名以限定

void

printdata()

class

girl

protected

:friend

class

boy;

void

eating()

private

: string name;};

class

boyvoid

print()

protected

:private

: string name;};

intmain()

注意這裡的printgirl函式的位置。

但是這種互為友元的關係可能實現不了

知道即可,沒有實質性的作用

#include

using

namespace std;

class

girl

;class

boyprotected:}

;//要放到printboy函式的下面

void girl::

printgirl()

intmain()

C 特殊成員詳解

目錄 1.const資料成員 const型別變數不可修改 唯讀模式 必須採用初始化引數列表的方式初始化。2.const成員函式 const寫在小括號的後面,常成員函式不能修改資料成員 唯讀 常成員函式與普通函式同時存在時,函式名相同時,普通物件有限呼叫普通函式,普通物件可以呼叫常成員函式。3.con...

C 的特殊成員理解

c 中有四類特殊的資料成員,分別是常量成員 引用成員 類物件成員以及靜態成員,以上成員的初始化和使用方式 與普通資料成員有所不同。表示式中進行初始化,不能在函式體內賦值。引用成員 引用成員的真實含義是 int const p,用指標常量指向乙個變數,然後使用這個指標常量去訪問變數,在定義時,應當使用...

C 類的特殊成員

靜態成員 static static int m int ca m 0 類中的靜態資料初始化,靜態成員不屬於物件,無法通過物件的操作進行初始化,它是屬於類的,初始化的時候不管公有私有都在類外進行 類中的靜態資料成員,可以被普通函式訪問 常量成員 類中的常量成員分為兩種 常量資料成員,常量函式成員 c...