C 中class 類 與繼承白話學習筆記

2022-08-30 13:54:18 字數 2642 閱讀 8079

class drink;//

別忘了最後要加乙個分號

當我們需要描述一杯飲料的時候,我們可以如下使用drink類:

drink a;//新建乙個飲料物件

printf(

"the volume of the drink is %lf\n

",a.volume);

在c++中,作用域除了public,private還有protected。那這三者的區別到底是什麼呢?

先來看個示例,就明白了:

#includeusing

namespace

std;

classa  

void

fun()

public:  

inta1;

protected:  

inta2;

private:  

inta3;

};int

main()

再來看不是人看的話:

1.類的乙個特徵就是封裝,public和private作用就是實現這一目的。所以:

使用者**(類外)可以訪問public成員而不能訪問private成員;private成員只能由類成員(類內)和友元訪問。

2.類的另乙個特徵就是繼承,protected的作用就是實現這一目的。所以:

protected成員可以被派生類物件訪問,不能被使用者**(類外)訪問。

繼承,顧名思義,就是乙個東西把另乙個東西的傳統保留下來。

我想要描述乙個雪碧物件,雪碧(sprite)和飲料(drink)有很多相似之處,我不想重複寫**,於是讓sprite物件繼承drink物件的屬性。

class sprite:public

drink

此處的冒號代表繼承。

現在的sprite物件除了擁有drink的全部屬性(volume,currentvolume,price,massofingredienta等),還有了獨有的屬性(hasbubble());

q:那麼冒號後的public代表什麼用法呢?

先看看定義:

繼承中的特點:

先記住:不管是否繼承,上面的規則永遠適用!

有public, protected, private三種繼承方式,它們相應地改變了基類成員的訪問屬性。

1.public繼承:基類public成員,protected成員,private成員的訪問屬性在派生類中分別變成:public, protected, private

2.protected繼承:基類public成員,protected成員,private成員的訪問屬性在派生類中分別變成:protected, protected, private

3.private繼承:基類public成員,protected成員,private成員的訪問屬性在派生類中分別變成:private,private, private

但無論哪種繼承方式,上面兩點都沒有改變:

1.private成員只能被本類成員(類內)和友元訪問,不能被派生類訪問;

2.protected成員可以被派生類訪問。

接下來是三個例子:

#includeusing

namespace

std;

classa

void

fun()

public:

inta1;

protected:

inta2;

private:

inta3;

};class b : publica

void

fun()

};int

main()

#includeusing

namespace

std;

classa

void

fun()

public:

inta1;

protected:

inta2;

private:

inta3;

};class b : protecteda

void

fun()

};int

main()

#includeusing

namespace

std;

classa  

void

fun()

public:  

inta1;

protected:  

inta2;

private:  

inta3;

};class b : privatea  

void

fun()

};int

main()

現在你明白了嗎?

引用:深入理解c++中public、protected及private用法:

C 繼承與Class 記憶體模型

c 類主要包括屬性和操作兩類,在物件模型中即乙個物件例項中占用記憶體的只是class的屬性部分,也就是資料成員部分,本文旨在剖析c 物件模型中在有繼承情形下類物件的記憶體布局,主要分4種情況討論 單一繼承沒有多型 單一繼承有多型 多重繼承 虛擬繼承。所謂單一繼承沒有多型,也就是class b繼承於 ...

C 類class 學習筆記

三看原則 1.看呼叫的成員變數是在類的內部還是類的外部 2.看兒子繼承方式 3.當前變數在兒子中的變數在父親中的訪問控制許可權 類的相容性原則 子類物件可以當做父類物件使用 子類物件可以直接賦值給父類物件 子類物件可以直接初始化父類物件 父類指標可以直接指向子類物件 父類引用可以直接引用子類物件 為...

C 中結構 struct 與類 class 的區別

像類一樣,結構 struct 是能夠包含資料成員和函式成員的資料結構,但是與類不同,結構是值型別,不需要堆分配。結構型別的變數直接儲存該結構的資料,而類型別的變數則儲存對動態分配的物件的引用。結構型別不支援使用者指定的繼承,並且所有結構型別都隱式地從型別 object 繼承。結構對於具有值語義的小型...