在c++中,類內的成員變數和成員函式分開儲存
只有非靜態成員變數才屬於類的物件上
(1)空物件的大小
空物件占用記憶體空間為: 1 ;c++編譯器會給每個空物件也分配乙個位元組空間,是為了區分空物件佔記憶體的位置 ;每任空物件也應該有乙個獨一-無二的記憶體位址 。
#include using namespace std;
class person
//非靜態成員函式 不屬於類的物件上
static void func2(){} //靜態成員函式 不屬於類的物件上
我們知道在c++中成員變數和成員函式是分開儲存的
每乙個非靜態成員函式只會誕生乙份函式例項,也就是說多個同型別的物件會共用一塊**
那麼問題是:這一塊**是如何區分那個物件呼叫自己的呢?
c++通過提供特殊的物件指標,this指標,解決上述問題。this指標指向被呼叫的成員函式所屬的物件
this指標是隱含每乙個非靜態成員函式內的一種指標
this指標不需要定義,直接使用即可
this指標的用途:
(1)當形參和成員變數同名時,可用this指標來區分
不用this
使用this
(2)在類的非靜態成員函式中返回物件本身,可使用return *this現在有個需求要一直給p2加p1的年齡
c++中空指標也是可以呼叫成員函式的,但是也要注意有沒有用到this指標
如果用到this指標,需要加以判斷保證**的健壯性
修改**如下:
經測試,靜態成員函式也是可以通過空指標訪問的。
(1)常函式
常函式:
#include using namespace std;
class person4
int m_a;
mutable int m_b; //可修改 可變的
};int main(void)
(2)常物件
常物件:
#include using namespace std;
class person4
void myfunc1()
void myfunc2()const
int m_a;
mutable int m_b; //可修改 可變的
};void test004()
int main(void)
c 物件模型和this指標
1.成員變數和成員函式分開儲存 在c 中類內的成員變數和成員函式分開儲存,只有非靜態的成員變數才屬於類的物件上 c 編譯器會給每個空物件也分配乙個記憶體空間,是為了區分空物件佔記憶體的位置 this指標是隱含每乙個非靜態成員函式內的一種指標 this指標不需要定義,直接使用即可 this指標指向被呼...
c 物件模型和this指標
成員變數和成員函式分開儲存 類內的成員變數和成員函式分開儲存 只有非靜態成員變數才屬於類的物件上,靜態成員變數以及函式都不屬於物件 空物件占用記憶體空間為1 c 編譯器會給每隔空物件也分配乙個位元組空間,是為了區分空物件佔記憶體的位置 每個空物件也應該有乙個獨一無二的記憶體位址 this指標的概念 ...
C 物件模型和this指標
在c 中,類內的成員變數和成員函式分開儲存 只有非靜態成員變數才屬於類的物件上 include using namespace std 成員變數 和 成員函式 是分開儲存的 class person static void func2 靜態成員函式,不佔物件空間 int person m b 10 ...