類的作用域,例項化和this指標

2021-10-01 02:53:36 字數 1442 閱讀 5958

類的作用域

類定義了乙個新的作用域,類的所有成員都在類的作用域中。在類外定義成員,需要使用::作用域解析符,指明成員屬於哪個類域

比如下面這個例子:

#include using namespace std;

class person

;//這裡需要指定printpersoninfo是屬於person這個類域

void person::printpersoninfo()

類的例項化

當我們使用乙個類去建立物件時,就稱為類的例項化

類其實可以看作乙個模型一樣的東西,限定了類有哪些成員。當我們定義出了乙個類並沒有分配實際的記憶體空間來儲存它;

乙個類可以例項化出多個物件,例項化出的物件占用實際的物理空間,儲存類成員變數

可以看個例子來說明,比如我們在建築房子的時候需要有設計圖,我們需要拿著建築設計圖去建造房子,而類就像是這個設計圖,只需要設計出需要什麼東西,但是並沒有實際的實體建築物存在,所以說類同樣也只是乙個設計,例項化出的物件才能實際儲存資料,占用物理空間。

再來看乙個**示例

#include using namespace std;

class person

;void person::showinfo()

int main()

person是乙個類,而man就是person這個類例項化出的物件。

this指標

this指標的引出

這裡我們可以先定義乙個日期類

#include using namespace std;

class date

void display() };

int main()

在上面的這個類中,我們定義了setdate和display兩個成員函式,那麼函式是如何知道應該設定d1物件,而不是設定d2物件的呢?

這就引出了this指標,在c++當中,通過this指標就能解決該問題,即:c++編譯器給每個「成員函式」增加了乙個隱藏的指標引數,讓該指標指向當前物件(函式執行時呼叫該函式的物件)。

在函式體當中,所有成員變數的操作,都是通過該指標去訪問。

比如上面的display函式

其實就是

void display(date * this)

this指標的特性

this指標的型別:是當前類型別的指標,this是乙個常量指標,不能更改指向

只能在「成員函式」的內部使用,成員函式中,this指標中的成員不需要使用this指標訪問,直接訪問即可

一般成員函式中都含有乙個this指標,這個指標指向呼叫這個成員函式的物件。

類 作用域 共享變數 例項變數

類變數和例項變數在操作上的區別 被所有例項共享的變數 class sapm spam spam x sapm y sapm x.spam spam y.spam spam sapm.data 123 x.data,y.data 123 123 對例項的屬性進行賦值運算會在該例項內建立或修改變數名,而...

C 系列 13 C 類的作用域及例項化

類定義了乙個新的作用域,類的所有成員都在類的作用域中。在類體外定義成員,需要使用 作用域解析符指明成員屬於哪個類域。class person 這裡需要指定printpersoninfo是屬於person這個類域 void person printpersoninfo cout name 用類型別建立...

類的作用域

更多c 類的基本概念 每個類都會定義它自己的作用域。在類的作用域外,普通的資料和函式成員只能由物件 引用或者指標使用成員訪問運算子來訪問。對於類型別成員則使用作用域運算子訪問。不論哪種情況,跟在運算子之後的名字都必須是對應類的成員。作用域和定義在類外部的成員 乙個類就是乙個作用域很好地解釋為什麼當我...