在C中破解有限形式的多态性的一种方法是执行以下操作:
typedef struct {
int x;
} base;
typedef struct {
base super;
int y;
} derived;
Run Code Online (Sandbox Code Playgroud)
现在,您可以将派生实例作为基本实例引用,具体取决于变量的转换方式,即:
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);
Run Code Online (Sandbox Code Playgroud)
所以我的问题是,这究竟是如何工作的?是因为当你把它作为基础并引用变量时,你引用int成员'x'作为'base'结构开头的偏移量?这是我唯一能想到的,任何帮助都会受到赞赏.
非常感谢!