類和物件(一)

2021-08-20 21:10:50 字數 1654 閱讀 8322

物件導向程式設計 概念:(object oriented programming,縮寫:oop)是一種程式設計范型,同時也是一種程式開發的方法。 物件指的是類的例項,將物件作為程式的基本單元,將程式和資料封裝其中,以提高軟體的重用性、靈活性和擴充套件性。

c++不是純物件導向語言,而是基於物件導向的語言 (ps:因為它包含c的部分,c是面向過程)

c++中類中有三種訪問限定符,分別是public(公有)private(私有)protected(保護)。

public成員可從類外部直接訪問,private/protected成員不能從類外部直接訪問。

每個限定符在類體中可使用多次,它的作用域是從該限定符出現開始到下乙個限定符之前或類體結束前。

類體中如果沒有定義限定符,則預設為私有的。

類的訪問限定符體現了物件導向的封裝性。

###作用域

每個類都定義了自己的作用域,類的成員(成員函式/成員變數)都在類的這個作用域內,成員函式內可任意訪問成員變數和其它成員 函式。

物件可以通過 . 直接訪問公有成員,指向物件的指標通過 -> 也可以直接訪問物件的公有成員。

在類體外定義成員,需要使用 :: 作用域解析符指明成員屬於哪個類域。

一般來說類的大小是類裡面每乙個成員的和,不過依舊存在以下的規則:

1.成員函式不佔類的大小。

2.空類為了佔位大小依舊為乙個位元組。

3.static修飾的成員儲存在靜態區不算類的大小。

4.類的大小遵從記憶體對齊原則。

c++類裡存在六個預設的成員函式,分別為建構函式,拷貝建構函式,析構函式,賦值運算子過載函式,取位址操作符過載函式,const修飾的取位址操作符過載函式。由於前四個很重要,這裡重點介紹前四個預設成員函式。

成員變數為私有的,要對它們進行初始化,必須用乙個公有成員函式來進行。同時這個函式應該有且僅在定義物件時自動執行一次,這時 呼叫的函式稱為建構函式(constructor) 。 建構函式是特殊的成員函式,其特徵如下:

函式名與類名相同。

無返回值。

物件構造(物件例項化)時系統自動呼叫對應的建構函式。

建構函式可以過載。

建構函式可以在類中定義,也可以在類外定義。

如果類定義中沒有給出建構函式,則c++編譯器自動產生乙個預設的建構函式,但只要我們定義了乙個建構函式,系統就不會自動 生成預設的建構函式。

無參的建構函式和全預設值的建構函式都認為是預設建構函式,並且預設的建構函式只能有乙個。

建立物件時使用同類物件來進行初始化,這時所用的建構函式稱為拷貝建構函式(copy constructor),拷貝建構函式是特殊的構造函 數。

特徵:拷貝建構函式其實是乙個建構函式的過載。

拷貝建構函式的引數必須使用引用傳參,使用傳值方式會引發無窮遞迴呼叫。

若未顯示定義,系統會預設預設的拷貝建構函式。預設的拷貝建構函式會,依次拷貝類成員進行初始化。

當乙個物件的生命週期結束時,c++編譯系統會自動呼叫乙個成員函式,這個特殊的成員函式即析構函式(destructor)

建構函式是特殊的成員函式,其特徵如下:

析構函式在類名加上字元~。

析構函式無引數無返回值。

乙個類有且只有乙個析構函式。若未顯示定義,系統會自動生成預設的析構函式。

物件生命週期結束時,c++編譯系統系統自動呼叫析構函式。

注意析構函式體內並不是刪除物件,而是做一些清理工作。

類和物件語法(一)

一 抽象和類 類是一種將抽象轉化為使用者定義型別的c 工具。它將資料表示和資料處理的方法進行組合。那麼如何來定義類呢?要想對類進行定義,得先知道類的組成吧。類由資料成員和成員函式組成。資料成員可以包含int char double float等各種型別,如何定義主要還是根據對物件的描述,即如何對物件...

python,類和物件(一)

萬物皆物件,在python中也存在物件,首先我們需要知道物件導向的三大特徵封裝 繼承 多型。封裝就是將一種或多種雜亂無序的 進行有序的分類封裝。繼承可以理解為孩子會繼承父親所有的東西。多型可以理解問乙個方法多種形式展出。類 class 首先約定俗成的規定,那麼我們首先建立乙個person類,它包含屬...

C 中的類和物件(一 初識類和物件)

面向過程和物件導向的初步認識 c語言是基於面向過程的,關注的是過程,分析出求解問題的步驟,通過函式呼叫逐步解決問題。c 是基於物件導向的,關注的是物件,將一件事情拆分成不同的物件,靠物件之間的互動完成。class為定義類的關鍵字,person為類的名字,中為類的主體,注意類定義結束時後面的分號。類中...