#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個位元組 ...