C 學習(10) 物件模型和this指標

2022-08-13 02:45:14 字數 1478 閱讀 2017

在c++中,類內的成員變數和成員函式分開儲存

只有非靜態成員變數才屬於類的物件上

#include#includeusing namespace std;

//成員變數和成員函式是分開儲存的

class person //非靜態成員函式,不屬於類的物件上

static void func(){} //靜態成員函式,不屬於類的物件上

};int person::m_b = 10;

void test01()

void test02()

int main()

通過1我們知道了c++中成員變數和成員函式是分開儲存的

每乙個非靜態成員函式只會誕生乙份函式例項,也就是說多個同型別的物件會共用一塊**

那麼問題是:這一塊**是如何區分哪個物件呼叫的自己呢?

c++通過提供特殊的物件指標,this指標,解決上述問題。this指標指向被呼叫的成員函式所屬的物件

this指標是隱含每乙個非靜態成員函式的一種指標

this指標不需要定義,直接使用即可

this指標的用途:

#includeusing namespace std;

class person

int age;

person& personaddage(person &p)

};//1. 解決名稱衝突

void test01()

//2. 返回物件本身用*this

void test02()

int main()

c++中空指標也是可以呼叫成員函式的,但是也要注意有沒有用到this指標

如果用到this指標,需要加以判斷保證**的健壯性

#includeusing namespace std;

class person

void showpersonage()//預防錯誤

cout << "age = " << m_age /*this->m_age*/ << endl;

}int m_age;

};void test01()

int main()

常函式:

常物件:

在成員函式後加const,修飾的是this指向,讓指標指向的值也不可以修改

#includeusing namespace std;

class person

void func()

int m_a;

mutable int m_b; //特殊變數,即使在常函式中,也可以修改這個值,加關鍵字mutable

};void test01()

void test02()

int main()

C 物件導向 9 物件模型和this指標

本篇來學習物件模型和this指標,物件模型主要是了解物件的儲存模型。在c 中,類內的成員變數和成員函式是分開儲存的,只有非靜態成員變數才是屬於類的物件上,其他都和類存在不同記憶體區域。1.乙個類的空物件占用記憶體是多大位元組 這裡我們先寫乙個 通過sizeof 函式來列印乙個空的類物件占用記憶體是多...

1 1 物件模型

q1 c 的類有兩種資料成員 static 資料成員與 nonstatic 資料成員,有三種成員函式 static,nonstatic,virtual。q2 在虛繼承的情況下,base class不管在繼承串鏈中被派生多少次,永遠只會存在乙個例項 稱為subobject q3 c 物件模型。每個物件...

7 物件模型

標準 c 物件模型在執行時效率方面卓有成效,但是在某些特定問題域下的靜態特性就顯得捉襟見肘。gui 介面需要同時具有執行時的效率以及更高階別的靈活性。為了解決這一問題,qt 擴充套件 了標準 c 所謂 擴充套件 實際是在使用標準 c 編譯器編譯 qt 源程式之前,qt 先使用乙個叫做 moc met...