易截截图软件、单文件、免安装、纯绿色、仅160KB

C 语言的面向对象

C 语言的面向对象
如前所说,面向对象是一种软件设计的思想,是语言无关的。在本节中,我举一个链表(list) 的例子来说明如何在 C 语言中的设计出有面向对象风格的代码。
定义接口
接口是面向对象语言中的一个比较重要的概念,接口只对外部承诺实现该接口的实体可以完成什么样的功能,但是不暴露实现的方式。这样的好处是,实现者可以在不接触接口使用者的代码的情况下,对实现进行调整。
我们来看看链表的接口定义:
清单 1. 链表的接口定义
#ifndef _ILIST_H
  #define           _ILIST_H
   // 定义链表中的节点结构
  typedef struct node{
    void *data;
    struct node *next;
  }Node;
   // 定义链表结构
  typedef struct list{
    struct list *_this;
    Node *head;
    int size;
    void (*insert)(void *node);// 函数指针
    void (*drop)(void *node);
    void (*clear)();
    int (*getSize)();
    void* (*get)(int index);
    void (*print)();
  }List;
   void insert(void *node);
  void drop(void *node);
  void clear();
  int getSize();
  void* get(int index);
  void print();
   #endif   /* _ILIST_H */
  IList 接口中,可以清晰的看到,对于一个 list 实体 ( 也就是对象 ) 来说,可以在其上 进行 insert, drop, clear, getSize, get(index) 以及 print 等操作。
接口的实现
清单 2. 构造方法
  Node *node = NULL;
  List *list = NULL;
   void insert(void *node);
  void drop(void *node);
  void clear();
  int getSize();
  void print();
  void* get(int index);
   List *ListConstruction(){
    list = (List*)malloc(sizeof(List));
    node = (Node*)malloc(sizeof(Node));
    list->head = node;
    list->insert = insert;// 将 insert 函数实现注册在 li


相关文档:

读《C和指针》笔记摘要【1】

2010-03-16
1,字符串常量:就是在源程序中被双引号括起来的一串字符,例如“hello”。在内存中存6个字节,包括最后一个NUL字节(即‘\0’).
2,NUL是ASCii字符集中‘\0’字符的名字,它的字节模式为全0. NULL指一个其值为0的指针,他们都是整型值,且值都相同,所以他们可以互换使用,但 ......

一个Linux下C线程池的实现

      什么时候需要创建线程池呢?简单的说,如果一个应用需要频繁的创建和销毁线程,而任务执行的时间又非常短,这样线程创建和销毁的带来的开销就不容忽视,这时也是线程池该出场的机会了。如果线程创建和销毁时间相比任务执行时间可以忽略不计,则没有必要使用线程池了。
   下面是 ......

标准C/C++程序通过gSOAP调用WebService

转自:http://commandos.blog.51cto.com/154976/130652
一、 环境准备
在本文中,所有程序均在Linux下开发完成,经测试能够正常运行。
在开发过程中,我们需要用到gSOAP,可以从以下网址下载获得:[url]http://www.cs.fsu.edu/~engelen/soap.html[/url]
我下载的是gsoap_2.7.12.tar.gz
下载下来解压缩,按正常安装过 ......

C/C++函数调用约定


关于 C/C++ 函数调用约定,大多数时候并不会影响程序逻辑,但遇到跨语言编程时,了解一下还是有好处的。
VC 中默认调用是 __cdecl 方式,Windows API 使用 __stdcall 调用方式,在 DLL 导出函数中,为了跟 Windows API 保持一致,建议使用 __stdcall 方式。
调用约定跟堆栈清除密切相关。如果写一个汇编函数,给 C/C++ ......

DS计划C深入项目学习总结——变量的作用域

1.1 变量作用域
1.1.1 几种常见类型变量的作用域
作用域(scope)或者可见性是指变量在程序内的可见和可引用的范围。
比如:
1、 全局变量在所有的文件都可见,那他的作用域就是所有文件;
2、 static定义的全局变量,只在定义它的源文件中可见,那他的作用域就是其所在的源文件;
3、 函数内部的局部变量,只在其函数 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号