C用宏实现C++继承的特性

 

#define CLASS(a) typedef strcut a a; \

     struct a{

#define ENDCLASS(a) a##_FIELDS };

 

CLASS(Base)

#define Base_FIELDS\

     int     base_value;\

     char  *base_ptr

ENDCLASS(Base)

 

CLASS(Private)

#define Private_FIELDS Base_FIELDS

      int     private_value;\

      char  *private_ptr;

ENDCLASS(Private)

 

// example

int main(void)

{

     Private  temp;

     temp.base_value = 1;

     temp.private_value = 2;

    

     return 0;

}

注: Private temp;展开如下:

      typedef struct Private Private;

      struct Private {

          #define Private_FIELDS Base_FIELDS

          int       private_value;\

          char   *private_ptr;

          Private_FIELDS };

      进一步展开如下:

      struct Private {

          #define Private_FIELDS Base_FIELDS

          int       private_value;\

          char   *private_ptr;

          int       base_value;\

          char  *base_ptr };  

      如此,就继承了Base类中的变量信息。 

      细心的朋友会发现,这种定义方法的关键是两个宏 : 

      #define Private_FIELDS Base_FIELDS 以及ENDCLASS(a)

  

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值