C 類 物件導向初探

2021-08-21 15:31:06 字數 813 閱讀 2942

我們需要解決這幾個問題:

a. c++類物件中的成員變數和成員函式是一起儲存的嗎?如果不是?

b. c++編譯器如何管理類和物件,具體的說就是物件呼叫類中的方法,c++編譯器是如何區分哪個具體的物件呼叫哪個成員方法的?

我們應該知道c++有兩種成員資料: static,nostatic; 三種成員函式: static,nostatic,virtual。

下面看這個案例:

class a

;class b

;class c

static

void pg() {}

};int main()

其實根據輸出結果,我們得出以下的結論:

a. 成員變數:

b. 成員函式儲存在**段中。

其實對於普通的成員函式(不是靜態的成員函式)中, 引數中都有乙個this指標。這個this指標其實指向的是物件自己,通過this指標。c++編譯器會知道是哪個物件呼叫的類的成員函式。

我們總結一下:

a. c++類物件中的成員變數和成員函式時分開儲存的;

b. c++類的普通成員函式(包括建構函式,但是不包括靜態的成員函式)中都包含乙個指向當前物件的this指標;

c. 靜態成員函式和靜態成員變數屬於類;

d. 靜態成員函式和普通成員函式的區別:

靜態成員函式不包含指向具體物件的this指標,普通的成員函式包含乙個指向具體物件的指標。

C 物件導向模型初探

前言 c 物件模型可以概括為以下2部分 1.語言中直接支援物件導向程式設計的部分,主要涉及如建構函式 析構函式 虛函式 繼承 單繼承 多繼承 虛繼承 多型等等。2.對於各種支援的底層實現機制。在c語言中,資料 和 處理資料的操作 函式 是分開來宣告的,也就是說,語言本身並沒有支援 資料和函式 之間的...

C 中物件導向模型初探

這裡主要概述成員函式的本質,這裡只是用c語言的方式來實現c 中類的功能,並不代表c 編譯器的真正做法,但c 編譯器實現原理大致如此。注釋部分為c 的實現方式,也是c 編譯器的實現原理 總結 1 c 類物件中的成員變數和成員函式是分開儲存的,c語言的記憶體四區模型仍然有效 2 c 中類的普通成員函式都...

c 類和物件初探

1 類 物件 成員變數 成員函式 2 物件導向三大概念 封裝 繼承 多型 3 程式設計實踐 類的定義和物件的定義,物件的使用 求圓形的面積 定義teacher類,列印teacher的資訊 把類的宣告和類的實現分開 1 封裝 encapsulation a 封裝,是物件導向程式設計最基本的特性。把資料...