我正在尝试在 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/