用乙個指向int的指標來儲存乙個物件的位址。

2021-06-07 21:01:32 字數 1174 閱讀 8421

#include

using namespace std;

class class

};int main()

size of class = 4

#include

using namespace std;

class class

virtual void fun2()

virtual void fun3()

};int main()

size of class = 4

#include

using namespace std;

class cpoint

// 譯註:原文此處有分號,我將其去掉,下皆同

};int main()

size of class = 12

這些程式的輸出表明,當你向類中新增了虛函式之後,那麼它的尺寸就會增加乙個int的大小。 在visual c++中也就是增加4個位元組。這就意味著這個類中有三個整數大小的位置, 乙個是x,乙個是y,另乙個是處理虛函式用的虛函式表指標

#include

using namespace std;

class cpoint

int getx() const

int gety() const

virtual ~cpoint()

};int main()

這個程式中最重要的東西是:

int* pint = (int*)&objpoint;

*(pint+0) = 100; // 企圖改變x的值

*(pint+1) = 200; // 企圖改變y的值

其中,我們在把物件的位址存入乙個整型指標之後,就可以把這個物件看作乙個整型的指標了。程式的輸出為:

x = 200

y = 10

當然,這並不是我們想要的結果,它表明200儲存在了m_ix資料成員的位置。這就意味著m_ix,也就是第乙個成員變數,是起始於記憶體中第二個位置的,而不是第乙個。換句話說,第乙個成員是虛函式表指標,其它的才是物件的資料成員。那麼,只需要修改以下的兩行:

int* pint = (int*)&objpoint;

*(pint+1) = 100; // 企圖改變x的值

*(pint+2) = 200; // 企圖改變y的值

x = 100

y = 200

用乙個指向int的指標來儲存乙個物件的位址。

include using namespace std class class int main size of class 4 include using namespace std class class virtual void fun2 virtual void fun3 int main ...

用乙個 int 來描述位置資訊

一般的,遊戲場景中物件的位置資訊都是用兩個 int 來描述,像這樣 struct pos pos 使用的時候這樣 定義乙個座標 pos pos 獲取x軸座標 int x pos.x 獲取y軸座標 int y pos.y 然後我看到sdlpal中只用了乙個無符號整形來描述,具體 是這樣的 來自palc...

陣列指標 指標指向乙個陣列

include include using namespace std int main void int p 10 先算小括號,p和 結合,屬於指標型別,指標指向擁有十個int型元素的陣列 p a 等價於int p 10 a char p 20 行指標,str 3 20 共三行,每行20個位元組 ...