iOS开发笔记 一天到晚游泳的余

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 585|回复: 0

结构体实现面向对象设计思想

[复制链接]
  • TA的每日心情
    发光
    2019-4-19 14:50
  • 签到天数: 366 天

    [LV.9]以坛为家II

    发表于 2016-6-8 10:37:39 | 显示全部楼层 |阅读模式
    1、SAObject.hpp
    [C++] 纯文本查看 复制代码
    #ifndef SAObject_hpp
    #define SAObject_hpp
    
    #include <stdio.h>
    // 声明主体对象结构体
    struct SAObject{
        int id;
        char name[20];
        SAObject *next;
    };
    // 1、DataStore中包含了一个固有的SAObject
    // 2、SAObject的空间分配由DataStore来管理
    struct DataStore{
        SAObject header;
    };
    
    // 创建
    DataStore *create();
    // 新增元素
    void add(DataStore *, const SAObject *);
    // 销毁
    void destroy(DataStore *);
    
    #endif /* SAObject_hpp */
    2、SAObject.cpp
    [C++] 纯文本查看 复制代码
    #include "SAObject.hpp"
    #include <stdlib.h>
    
    // 创建
    DataStore *create()
    {
        DataStore *ds = (DataStore *)malloc(sizeof(DataStore));
        ds->header.next = NULL;
        return ds;
    }
    // 新增元素
    void add(DataStore *ds, const SAObject *obj)
    {
        // 复制数据
        SAObject *copy = (SAObject *)malloc(sizeof(SAObject));
        *copy = *obj;
        // 找到最后一个节点,添加新对象
        SAObject *c = &ds->header;
        while (c->next) {
            c = c->next;
        }
        c->next = copy;
        copy->next = NULL;
    }
    // 销毁
    void destroy(DataStore *ds)
    {
        SAObject *obj = ds->header.next;
        while (obj) {
            SAObject *next = obj->next;
            free(obj);
            obj->next = NULL;
            obj = next;
        }
        free(ds);
        ds->header.next = NULL;
    }
    3、main.cpp
    [C++] 纯文本查看 复制代码
    #include <stdio.h>
    #include <stdlib.h>
    #include "SAObject.hpp"
    
    int main(int argc, char *argv[])
    {
        DataStore *ds = create();
        
        SAObject obj1 = {1, "sian"};
        add(ds, &obj1);
        
        SAObject obj2 = {2, "jack"};
        add(ds, &obj2);
        
        destroy(ds);
        return 0;
    }
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    手机版|小黑屋|Archiver|iOS开发笔记 ( 湘ICP备14010846号 )

    GMT+8, 2020-2-26 11:42 , Processed in 0.113301 second(s), 23 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

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