小白學習,c 基礎(七)

2021-10-04 09:03:35 字數 2755 閱讀 7065

1.1修飾成員函式

用const修飾的成員函式時,const修飾this指標指向的記憶體區域,成員函式體內不可以修改本類中的任何普通成員變數, 當成員變數型別符前用mutable修飾時例外。

int

myfun

(void

)const

//const修飾的是成員函式

//函式內部不能修改普通成員變數 mutable修飾時例外

1.2、const修飾物件叫常物件

const int num = 10;//系統不會給num開闢空間 num被放入符號表中 如果後期對&num 這時系統才會給num開闢空間

c++允許 友元 訪問 私有資料。

友元的語法:

friend關鍵字只出現在宣告處 其他類、類成員函式、全域性函式都可宣告為友元 友元函式不是類的成員,不帶this指標 友元函式可訪問物件任意成員屬性,包括私有屬性。

2.1、普通全域性函式作為類的有元

class

room};

// 普通全域性函式 作為 類的友元

//好** 訪問 我的房間

void

goodgayvisit

(room &room)

void

test01()

2.2、類的某個成員函式 作為另乙個類的友元

#include

using

namespace std;

class

room

;//room向前宣告

class

goodgay

;class

room};

void goodgay::

visit1

(room &room)

void goodgay::

visit2

(room &room)

intmain

(int argc,

char

*ar**)

2.3、乙個類整體作為另乙個類的友元

乙個類的所有成員函式 訪問 另乙個類的私有資料

#include

using

namespace std;

class

room

;//room向前宣告

class

goodgay

;class

room};

void goodgay::

visit1

(room &room)

void goodgay::

visit2

(room &room)

intmain

(int argc,

char

*ar**)

3.1、過載運算子的概述

運算子過載,就是對已有的運算子重新進行定義,賦予其另一種功能,以適應不同的資料型別

運算子過載的目的:簡化操作 讓已有的運算子 適應適應不同的資料型別。

語法:函式的名字由關鍵字operator及其緊跟的運算子組成

比如:過載+運算子 ==>operator+ 過載=號運算 ==>operator=

注意:過載運算子 不要更改 運算子的本質操作(+是資料的相加 不要過載成相減)

3.2、運算子《的過載

#include

#include

using

namespace std;

class

person

//普通的成員函式

void

printperson

(void)~

person()

cout<<

"析構函式"

<;ostream&

operator

<<

(ostream &out, person &ob)

//out=cout, ob =ob1

intmain

(int argc,

char

*ar**)

3.3、過載+運算子:全域性函式作為友元,完成運算子過載+

#include

#include

using

namespace std;

class

person

person

(char

*name,

int num)

//成員函式 完成運算子過載 ob1用this代替 ob2用引數ob代替

person operator

+(person &ob)

return tmp;

}//普通的成員函式

void

printperson

(void)~

person()

cout<<

"析構函式"

<;//全域性函式作為友元 完成運算子過載<<

ostream&

operator

<<

(ostream &out, person &ob)

//out=cout, ob =ob1

void

test03()

intmain

(int argc,

char

*ar**)

小白學習,c 基礎(四)

巨集函式 帶引數 的缺點 第乙個在c中也會出現,巨集看起來像乙個函式呼叫,但是會有隱藏一些難以發現的錯誤。第二個問題是c 特有的,預處理器不允許訪問類的成員,也就是說預處理器巨集不能用作類的成員函式 內聯函式 內聯函式為了繼承巨集函式的效率,沒有函式呼叫時開銷,然後又可以像普通函式那樣,可以進行引數...

小白學習,c 基礎(五)

1 類的空間大小 using namespace std class data intgetnum void void test01 2 成員函式,在類內宣告,類外定義 include using namespace std class data data類的成員函式 void data setnu...

C 基礎學習(七) 多型

2 多型原理解析 3 抽象類 和 純虛函式 4 虛析構和純虛析構 5 向上型別轉換和向下型別轉換 1.1.1 靜態多型 1.1.2 動態多型 1.2.1 位址早繫結 編譯階段繫結好位址 1.3.1 位址晚繫結 父類的引用或指標指向子類物件 includeusing namespace std cla...