飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 8539|回复: 11

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

[复制链接]

该用户从未签到

发表于 2009-7-16 22:22:16 | 显示全部楼层 |阅读模式
.

简单模拟一下

其实类的思想就是C语言中结构体的一个扩充 在结构体数据中加入了函数指针来实现对结构体数据的处理 大概就是这个意思

用C标准来模拟一下类的思想 VC6编译通过

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

typedef struct node
{
        int year;
        int month;
        int day;
        int (*f1)(struct node *);
}Day;

int Show(Day * date)
{
        printf("%d-%2d-%2d \r\n",date->year,date->month,date->day);
        return 1;
}

Day * CreateDay(Day * date,int year,int month,int day)
{        
        Day * d;
        d=(Day *)malloc(sizeof(Day));
        if(!d)return 0;
        d->year=year;
        d->month=month;
        d->day=day;
        d->f1=Show;
        return d;
}

int main()
{
        Day * date=NULL;
        date=CreateDay(date,2005,12,31);
        date->f1(date);
        free(date);
        return 0;
}
PYG19周年生日快乐!
  • TA的每日心情
    开心
    2016-4-29 07:52
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2009-7-17 01:10:17 | 显示全部楼层
    提示: 作者被禁止或删除 内容自动屏蔽
    PYG19周年生日快乐!
  • TA的每日心情
    擦汗
    2017-9-24 22:49
  • 签到天数: 4 天

    [LV.2]偶尔看看I

    发表于 2009-7-17 07:57:16 | 显示全部楼层
    的确可以,就是有点麻烦,函数多了的话有点乱,毕竟封装性做的不是太好
    PYG19周年生日快乐!
  • TA的每日心情
    奋斗
    2017-4-20 22:12
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2009-7-18 09:39:06 | 显示全部楼层
    VC中类和结构体本身就是差不多的了(结构体支持构造函数,函数,属性等)
    只是结构体中全部都是公共域,没有私有域
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2009-7-18 16:09:46 | 显示全部楼层
    现在回到家了 现在可以跟着Nisy继续大哥学习
    先重新看看前13课视频
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2024-7-17 08:58
  • 签到天数: 178 天

    [LV.7]常住居民III

    发表于 2009-7-18 17:54:20 | 显示全部楼层
    看见指针头就有点晕
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2009-7-29 00:51:50 | 显示全部楼层
    原帖由 suiyunonghen 于 2009-7-18 09:39 发表
    VC中类和结构体本身就是差不多的了(结构体支持构造函数,函数,属性等)
    只是结构体中全部都是公共域,没有私有域

    .cpp结构体和类功能是一样的好吧,只不过类默认是私有,结构体是公有
    谁告诉你结构体不能有private?
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2009-8-5 00:33:57 | 显示全部楼层
    真的 不怎么懂 啊   呵呵
    看来我要补课啊
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2009-12-10 19:57:09 | 显示全部楼层
    这里好像全是c
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2009-12-11 07:29:53 | 显示全部楼层
    原帖由 boy 于 2009-7-29 00:51 发表

    .cpp结构体和类功能是一样的好吧,只不过类默认是私有,结构体是公有
    谁告诉你结构体不能有private?

    呵呵,谁说结构体中不能有private 呢,只是没有什么实际应用意义而已,所以在实例中一般没有出现。但是在讲类与结构的异同点时都讲过的咯。
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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