设为首页 加入收藏

TOP

C语言对象化编程
2013-09-24 09:19:46 来源: 作者: 【 】 浏览:122
Tags:语言 对象化 编程

  以下为一个引子:

  C中struct的函数实现,只能用函数指针成员。

  C结构体内不能有函数的代码,但可以有函数的指针。

  C/C code

  Code highlighting produced by Actipro CodeHighlighter (freeware)

  #include <stdio.h>

  struct test

  {

  void fun()

  {

  printf("hello,world\n");

  }

  };

  int main()

  {

  struct test _t;

  _t.fun();

  return 0;

  }

  上面的代码保存为。c, 在VC 6.0, Dev Cpp 里都通不过。

  函数指针方式实现,而不要直接定义函数 …

  当然struct里能放函数指针的。比如这样:

  C/C code

  Code highlighting produced by Actipro CodeHighlighter (freeware)

  #include <stdio.h>

  void fun()

  {

  printf("hello,world\n");

  }

  struct test

  {

  void (*Fun)();

  };

  int main()

  {

  struct test _t;

  _t.Fun = fun;

  (*_t.Fun)();

  return 0;

  }

  C结构体内不能有函数的代码,但可以有函数的指针

  网友回复:纯C中的struct没有成员函数,但可以有函数指针。

  Object-oriented programming with ANSI-C是用函数指针来模拟成员函数的。

  Linux的源代码中C语言对象化

  参考Linux内核的源代码中,有更好的使用

  #include<stdio.h>

  struct MyClass

  {

  char* name;

  int age;

  void (*funnull) ();

  void (*func) (struct MyClass mc);

  };

  void realfunnull()

  {

  printf("hello world!\n");

  }

  void realfunc(struct MyClass mc)

  {

  printf("MyClass's name is:%s\n",mc.name);

  printf("MyClass's age is:%d\n",mc.age);

  }

  int main()

  {

  struct MyClass mc = {"Simon", 25, realfunnull, realfunc};

  mc.funnull();

  mc.func(mc);

  return 0;

  }

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇C语言枚举类型enum 下一篇C语言实现服务器与客户端

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: