在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...