c - C中的继承

标签 c inheritance

我正在尝试在 C 中实现继承。我编写了以下两个变体。方法一运行程序崩溃,方法二运行正常。我在方法 1 中做错了什么?

方法一:

#include<stdio.h>
#include<stdlib.h>

typedef struct base_class
{
    int a;
}Base;

typedef struct derived_class
{
    int b;
    Base *base_ptr;
}Derived;

int main(void){
    Derived *der_ptr;
    der_ptr = (Derived *)malloc(sizeof(Derived));
    der_ptr->b = 5;
    der_ptr->base_ptr->a=10;

    printf("%d %d",der_ptr->b,der_ptr->base_ptr->a);
}

方法二:

#include<stdio.h>
#include<stdlib.h>

typedef struct base_class
{
    int a;
}Base;

typedef struct derived_class
{
    int b;
    Base base_ptr;
}Derived;

int main(void){
    Derived *der_ptr;
    der_ptr = (Derived *)malloc(sizeof(Derived));
    der_ptr->b = 5;
    der_ptr->base_ptr.a=10;

    printf("%d %d",der_ptr->b,der_ptr->base_ptr.a);
}

最佳答案

方法 1 因这行代码而崩溃:

der_ptr->base_ptr->a=10;

问问自己:der_ptr->base_ptr 的值是多少?

关于c - C中的继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27872726/

相关文章:

fprintf() 的跨平台宏包装器

c++ - 使用回调来自定义类而不是子类化

无法调用但可以重写的 Java 方法

javascript - AngularJS 继承模式不使用作用域?

c - 从 C 中的其他函数中释放指针

c - C 中的随机函数

scala - 如何将隐式类参数映射到特征变量?

Angularjs - Controller 继承与范围继承

c - 如何创建一个函数来计算每个字母的出现次数?

c - 将文本文件读取到 C 中的行数组中