一個破解多態性在C限量表的辦法是做這樣的事情:C中的半繼承:這段代碼如何工作?
typedef struct {
int x;
} base;
typedef struct {
base super;
int y;
} derived;
現在,您可以參考派生實例作爲基本實例,這取決於變量是怎麼投,即:
derived my_derived;
my_derived.y = 10;
my_derived.super.x = 20;
//will print 10
printf("%d", (&my_derived)->y);
//will print 20
printf("%d", ((base*)(&my_derived))->x);
所以我的問題是,這是如何工作的?是因爲當你把它作爲基礎並引用一個變量時,你引用int成員'x'作爲'base'結構開頭的偏移量?這是我能想到的唯一的事情,任何幫助將不勝感激。
非常感謝!
+1這實際上是由C規格保證。 – bta 2010-07-23 21:56:11