C 基礎學習四

2021-10-09 08:31:04 字數 3156 閱讀 1108

const修飾成員函式

友元在乙個類中,若將乙個成員變數宣告為static,這種成員稱為靜態成員變數,與一般的資料成員不同,無論建立了多少個物件,都只有乙個靜態資料的拷貝 ,靜態成員變數,屬於某個類,所有物件共享 。

靜態變數,在編譯階段就分配空間,物件還沒有建立時,就已經分配空間 。

- 靜態成員變數必須在類中宣告,在類外定義

- 靜態資料成員不屬於某個物件,在為物件分配空間中不包括靜態成員所佔空間。

- 靜態資料成員可以通過類名或者物件名來引用

在乙個類中,若將乙個成員變數宣告為static,這種成員稱為靜態成員變數,與一般的資料成員不同,無論建立了多少個物件,都只有乙個靜態資料的拷貝 ,靜態成員變數,屬於某個類,所有物件共享 。

靜態變數,在編譯階段就分配空間,物件還沒有建立時,就已經分配空間 。

- 靜態成員變數必須在類中宣告,在類外定義

- 靜態資料成員不屬於某個物件,在為物件分配空間中不包括靜態成員所佔空間。

- 靜態資料成員可以通過類名或者物件名來引用

目的:為了 讓類中只有乙個例項,例項也不需要自己釋放

1.將預設構造和拷貝構造私有化

2.內部衛華乙個物件指標。

3.私有化唯一指標

4.對外提供 getinstance方法來訪問這個指標。

//建立主席類

//需求 單例模式 為了建立類中的物件,並且保證只有乙個物件例項

class chairman

//拷貝構造 私有化

chairman

(const chairman&c)

public:

//提供 get方法 訪問 主席

static chairman*

getinstance()

private:

static chairman * singleman;};

chairman * chairman:

:singleman = new chairman;

void

test01()

else

/*chairman * cm3 = new chairman(*cm2);

if (cm3 == cm2)

else

*/}

示例:pandas 是基於numpy 的一種工具,該工具是為了解決資料分析任務而建立的。

c++中的非靜態資料成員 直接內含在物件中,就想c struct一樣

成員函式雖然內含在class宣告內 ,卻不出現在物件中。

每乙個非內聯成員函式只會誕生乙份函式例項,成員函式和成員變數分開儲存

//#pragma pack(1)  修改為1位元組對齊

void

test01()

class person

;//非靜態成員函式 不屬於物件身上

static

int m_b;

//靜態成員變數 ,不屬於物件身上

static

void

func2()

;//靜態成員函式 ,不屬於物件身上

double m_c;

// 12 錯誤 16正確

};

p1.func()

p2.func()

func怎麼知道自己被哪乙個物件呼叫。

c++提供特殊的物件指標,this指標,this指標指向被呼叫的成員函式所屬的物件

this可以解決命名衝突

// this可以解決命名衝突

class person

//對比年齡

void

compareage

( person & p)

else

}//年齡相加

person&

plusage

(person & p)

int age;};

void

test01()

class person

void

showage()

cout << this->m_age << endl;

// null -> m_age

}int m_age;

// }

;void

test01()

class person

void

showinfo()

const

//常函式 不允許修改指標指向的值

void

show2()

const

int m_a;

mutable int m_b;

//就算是常函式 我還是執意要修改};

void

test01()

全域性函式做友元函式

class building

//客廳 臥室

public:

string m_sittingroom;

//客廳

private:

string m_bedroom;

//臥室};

//全域性函式 好**

void

goodgay

( building * building )

//友元函式 目的訪問類中的私有成員屬性

void

test01()

2.整個類做友元類

3.成員函式做友元函式

class building;

class goodgay

;class building

;goodgay:

:goodgay()

void goodgay:

:visit()

building:

:building()

void

test01()

友元類是單向的,不可傳遞的 。

小白學習,c 基礎(四)

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

C 基礎學習第四天

c 的基本 型別分為兩組 一組由儲存為整數的值組成,另一組由儲存為浮點數的值組成。整型之間通過儲存值時使用的記憶體量和有無符號來區分。整型從最小到最大依次是 bool,char,signed char,unsigned char,short,unsigned short,int,unsigned i...

Linux基礎學習(四)

自建yum倉庫,分別為網路源和本地源 編譯安裝http2.4,實現可以正常訪問,並將編譯步驟和結果提交。利用sed 取出ifconfig命令中本機的ipv4位址 ip addr show eth0 sed nr 3s 0 9 0 9.1 p 刪除 etc fstab檔案中所有以 開頭,後面至少跟乙個...