复习四:C的OOP-多层继承

本文介绍了一种使用宏实现多层继承的方法,确保子类能够调用父类的公共方法。通过具体的代码示例展示了如何正确初始化父类实例,并利用宏调用父类函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#pragma once
/*Super_Super.h*/
/*僋儔僗偺掕媊*/
typedef  
struct CSuper_Super_t{
    
/*僒僽乕僋儔僗偺僀儞僗僞儞僗*/
    
void *     body; 
    
/*帺恎偺僋儔僗曄悢*/
    
int        Value;
}
CSuper_Super;

extern  int  Super_Super_GetValue(CSuper_Super*);

 

 

/*Super_Super.c*/
#include 
"Super_Super.h"
/*僋儔僗娭悢*/
int Super_Super_GetValue(CSuper_Super* this)
{
     
return this->Value;
}

 

#pragma once
/*Super.h*/
#include 
"Super_Super.h"
/*僋儔僗偺掕媊*/
typedef  
struct CSuper_t{
    CSuper_Super    super;
    
/*僒僽乕僋儔僗偺僀儞僗僞儞僗*/
    
void *     body; 
}
CSuper;
/*弶婜壔曄悢*/
extern void Sub_Initialize(CSuper*);
/*儅僋儘偺掕媊*/
#define Super_GetValue(p) Super_Super_GetValue(p)

 

/*Super.c*/
#include 
"Super.h"
#include 
"Super_Super.h"
/*弶婜壔娭悢*/
void Super_Initialize(CSuper* this)

    
this->super.body = this;
}

 

/*Sub.h*/
#pragma once
#include 
"super.h"
#include 
"super_super.h"
/*僋儔僗偺掕媊*/
typedef  
struct CSub_t{
    CSuper      super;
}
CSub;
extern void Sub_Initialize(CSub*);
#define Sub_GetValue(p)   Super_GetValue(p);

 

 

/*Sub.c*/
#include 
"sub.h"
void Sub_Initialize(CSub* this)

 
this->super.body = this;
}

 

 

/*main.c*/
#include 
"sub.h"
#include 
"super.h"
#include 
"super_super.h"
CSub          mSub;
CSub         
*pSub;

void  main(){
    
int ret1 = 0;
    
/*億僀儞僞偺弶婜壔*/
    pSub 
= &mSub;
    Sub_Initialize(pSub);
    Super_Initialize(pSub);
    ret1 
= Sub_GetValue(pSub);
    ret1 
= Super_GetValue(pSub);
    ret1 
= Super_Super_GetValue(pSub);         
}

 

多层继承的主旨是子类能用父类公共的方法

这个就是通过宏来实现的。

在初期化的时候一定要初期化CSuper      super才可以。

父类的部分有了实体,宏才可以用。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

进击的横打

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值