善于利用C++语言特性编码(3)

一句话,用隐式指针来实现把一些不想让别人知道的数据结构定义在.c文件中,而不是通常的.h头文件中。这样,只要.c文件不公开,别人就不能获得数据结构的详细信息。

看一个列子:
下面是interface.h头文件的内容,我们获得这个头文件,只知道有个struct sdata的数据结构和sdata_init()的函数。至于这个sdata结构包含些什么内容我们一点不知道,所以也不可能进行什么更改;

interface.h:

#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <string.h>

typedef struct sdata * Sdata;

Sdata sdata_init(int i);
void sdata_print(Sdata sdata);

下面我们看写interface.c文件的内容:

#include "interface.h"

struct sdata{
        int i;
};

Sdata sdata_init(int i)
{
        Sdata sp=NULL;

        sp=(Sdata)malloc(sizeof(struct sdata));
        sp->i=10;

        return sp;
}
void sdata_print(Sdata sdata)
{
 printf("%d/n",sdata->i);
}
恩,在这个文件中才有具体的数据结构定义和函数的实现;
写个测试程序:
test.c
#include "interface.h"
int main()
{
        Sdata sp;

        sp=sdata_init(10);
 sdata_print(sp);
 }
 可以看到,对于写test.c的程序员来说,他并不了解Sdata的内部结构是怎么样的,
 他只要根据interface.h提供的函数进行各项操作就可以了。

 这就是隐式指针的简单应用。开发借口代码这很重要。
 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值