類的作用域
類定義了乙個新的作用域,類的所有成員都在類的作用域中。在類外定義成員,需要使用::作用域解析符,指明成員屬於哪個類域
比如下面這個例子:
#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 類的基本概念 每個類都會定義它自己的作用域。在類的作用域外,普通的資料和函式成員只能由物件 引用或者指標使用成員訪問運算子來訪問。對於類型別成員則使用作用域運算子訪問。不論哪種情況,跟在運算子之後的名字都必須是對應類的成員。作用域和定義在類外部的成員 乙個類就是乙個作用域很好地解釋為什麼當我...