公有、私有、保護成員
在關鍵字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標籤。
int5.類作用域:識別符號只在類中可見。test()
//三個標籤的作用域就是函式作用域
前向(前置)宣告
1.兩個類需要相互引用形成乙個「環形」引用時,無法先定義使用。這時候需要用到前向宣告。
2.前向宣告的類不能例項化,只能定義指標或者引用。
相互包含的例子:兩個類a,b,在類a的定義處定義b型別的成員變數,在b類的定義出定義a型別的成員變數。分別對應標頭檔案包含對方的標頭檔案,一編譯就出錯。
巢狀類(使用頻率較低)
用處:外圍類需要使用巢狀類物件作為底層實現,並且該巢狀類只用於外圍類的實現,且同時可以對使用者隱藏該底層實現。
例子:
#include using區域性類(使用頻率很低)1.類也可以定義在函式體namespace
std;
class
outer
*///
private:
// static int num_;
}; inner innerobj;
public
:
void
func()
static
intnum;
};//
巢狀類中的成員函式可以在它的類體外定義。
void
outer::inner::func()
int main(void
)
內,這樣的類被稱為區域性類(loacl class)。區域性類只在定義它的區域性域內可見;
2.區域性類的成員函式必須被定義在類體中;
3.區域性類中不能有靜態成員
。
C 學習筆記 二 類與物件
四.建立物件的2種方式 類由函式成員和資料成員組成,資料成員一般宣告為私有,私有和保護成員不能通過物件直接訪問。但是可以通過函式成員對私有資料成員進行操縱。訪問限定符 access specifier 有三種 例子 includeusing namespace std class cgoods ma...
C 學習 類與物件
類 就是描述一類問題的共同屬性和行為。共同的,是吧,用個類,就方便使用。屬性,一般就是引數咯,行為,一般就是函式噻 他是抽象的,就像 時鐘 只是一種概念,不佔儲存空間,在定義類時,不能初始化。物件呢,就是類 例項化的一種實體,比如我面前這個時鐘 引數被賦值,這裡多大什麼顏色的時鐘 比如,我建立乙個類...
Python學習筆記 類與物件
基於python3版本的學習。生活中我們所說的類,是物以類聚的類,是分門別類的類,是多個類似事物組成的群體的統稱。而在python中我們所遇到的類 class 比如整數 字串 浮點數等,不同的資料型別就屬於不同的類。準確來說,它們的全名是整數類 字串類 浮點數類。每乙個類之下都包含無數相似的不同個例...