小编ado*_*dol的帖子

C中的半继承:这个代码片段如何工作?

在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'结构开头的偏移量?这是我唯一能想到的,任何帮助都会受到赞赏.

非常感谢!

c oop inheritance

5
推荐指数
1
解决办法
220
查看次数

标签 统计

c ×1

inheritance ×1

oop ×1