飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

12
返回列表 发新帖
楼主: Nisy

[C/C++] 在C语言中模拟类的思想

[复制链接]

该用户从未签到

发表于 2010-6-3 16:07:48 | 显示全部楼层
补充一个技巧:继承,先上代码,

  1. //父类
  2. typedef struct
  3. {
  4.     long width;
  5.     long height;
  6.     void (*paint)(void *_this);
  7. }
  8. WINDOW;
  9. //子类
  10. typedef struct
  11. {
  12.     WINDOW  base; //继承于WINDOW类
  13.     void (*OnClick)(void *_this);
  14. }
  15. BUTTON;

  16. int main(int argc,char **argv)
  17. {
  18.     BUTTON button;
  19.     //间接调用父类成员
  20.     button.base.paint(&button.base);
  21.     //强制类型转换后直接访问父类成员
  22.     ((WINDOW)button).paint(&button);

  23.     return 0;
  24. }
复制代码
中心思想就是在子结构体的起始处包含一个父结构体成员,必须要放在起始处,才可以实现强制类型转换,原因你应该一想就明白~~
PYG19周年生日快乐!

该用户从未签到

发表于 2010-7-14 16:34:08 | 显示全部楼层
如果nisy在例子中将指针使用去掉,更易于初学者理解,并且这个例子并不是必须用指针指向!
PYG19周年生日快乐!
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

快速回复 返回顶部 返回列表