C 學習筆記03 類與物件

2022-07-24 10:27:09 字數 2138 閱讀 2347

公有、私有、保護成員

在關鍵字public後面宣告,它們是類與外部的介面,任何外部函式都可以訪問公有型別資料和函式;

在關鍵字private後面宣告,只允許本類中的函式訪問,而類外部的任何函式都不能訪問;

在關鍵字protected後面宣告,與private類似,其差別表現在繼承與派生時對派生類的影響不同。

資料抽象和封裝

資料抽象是一種依賴於介面和實現分離的程式設計(和設計)技術。類設計者必須關心類是如何實現的,但使用該類的程式設計師不必了解這些細節。使用者只要抽象地考慮該型別做什麼,而不必具體地考慮該類如何工作。

封裝是一項將低層次的元素組合起來形成新的、高層次的實體的技術。函式是封裝的一種形式:函式所執行的細節行為被封裝在函式這個更大的實體中。被封裝的元素隱藏了它們的實現細節——可以呼叫函式,但是不能直接訪問函式所執行的語句。同樣地,類也是乙個封裝的實體:它代表若干成員的聚集,設計良好的類隱藏了類實現的細節。

內聯成員函式

兩種定義方式

1.在類的定義內部宣告函式,在類的外部定義函式並在返回值之前加上inline關鍵字;

2.在類的定義內部直接定義函式,不需要給出inline關鍵字。

類與結構體許可權問題

在未指定訪問許可權時,class預設的是私有的,struct預設是公有的。

隱含的this指標

說明:1.成員函式有乙個隱含的附加形參,即指向該物件的指標,這個隱含的形參叫做this指標;

2.使用this指標保證了每個物件

可以擁有不同的資料成員

,但處理這些成員的**(函式

)可以被所有物件共享。

作用域

分類1.塊作用域:{}之間的作用域。

2.檔案作用域:顧名思義整個檔案內部。

3.函式原型作用域:int add(int a, int b); // 其中a,b的作用域。

4.函式作用域:常用在函式內部的goto標籤。

int

test()

//三個標籤的作用域就是函式作用域

5.類作用域:識別符號只在類中可見。

前向(前置)宣告

1.兩個類需要相互引用形成乙個「環形」引用時,無法先定義使用。這時候需要用到前向宣告。

2.前向宣告的類不能例項化,只能定義指標或者引用。

相互包含的例子:兩個類a,b,在類a的定義處定義b型別的成員變數,在b類的定義出定義a型別的成員變數。分別對應標頭檔案包含對方的標頭檔案,一編譯就出錯。

巢狀類(使用頻率較低)

用處:外圍類需要使用巢狀類物件作為底層實現,並且該巢狀類只用於外圍類的實現,且同時可以對使用者隱藏該底層實現。

例子:

#include using

namespace

std;

class

outer

*///

private:

// static int num_;

}; inner innerobj;

public

:

void

func()

static

intnum;

};//

巢狀類中的成員函式可以在它的類體外定義。

void

outer::inner::func()

int main(void

)

區域性類(使用頻率很低)1.類也可以定義在函式體

內,這樣的類被稱為區域性類(loacl class)。區域性類只在定義它的區域性域內可見;

2.區域性類的成員函式必須被定義在類體中;

3.區域性類中不能有靜態成員

C 學習筆記 二 類與物件

四.建立物件的2種方式 類由函式成員和資料成員組成,資料成員一般宣告為私有,私有和保護成員不能通過物件直接訪問。但是可以通過函式成員對私有資料成員進行操縱。訪問限定符 access specifier 有三種 例子 includeusing namespace std class cgoods ma...

C 學習 類與物件

類 就是描述一類問題的共同屬性和行為。共同的,是吧,用個類,就方便使用。屬性,一般就是引數咯,行為,一般就是函式噻 他是抽象的,就像 時鐘 只是一種概念,不佔儲存空間,在定義類時,不能初始化。物件呢,就是類 例項化的一種實體,比如我面前這個時鐘 引數被賦值,這裡多大什麼顏色的時鐘 比如,我建立乙個類...

Python學習筆記 類與物件

基於python3版本的學習。生活中我們所說的類,是物以類聚的類,是分門別類的類,是多個類似事物組成的群體的統稱。而在python中我們所遇到的類 class 比如整數 字串 浮點數等,不同的資料型別就屬於不同的類。準確來說,它們的全名是整數類 字串類 浮點數類。每乙個類之下都包含無數相似的不同個例...