【发布时间】:2010-07-23 21:48:36
【问题描述】:
破解 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”引用为从“基础”结构开始的偏移量?这是我唯一能想到的,任何帮助将不胜感激。
非常感谢!
【问题讨论】:
标签: c oop inheritance