当前位置: 首页 > news >正文

个人成立公司怎么做企业网站长沙专业网络推广公司

个人成立公司怎么做企业网站,长沙专业网络推广公司,wordpress主题html5,wordpress禁止别人访问c语言_实现类class的功能 实例 1.需求与背景2.实例1.类的头文件 class_A.h2.类的实现 class_A.c3.引用4.编译与运行 3.总结 1.需求与背景 使用C , python语言久了, 发现 类 class写代码逻辑更方便, 简洁. 封装的API更加易用; 内核代码中, 也经常看到类似类的封装. 自己尝试实现…

c语言_实现类class的功能 实例

  • 1.需求与背景
  • 2.实例
      • 1.类的头文件 class_A.h
      • 2.类的实现 class_A.c
      • 3.引用
      • 4.编译与运行
  • 3.总结

1.需求与背景

使用C++ , python语言久了, 发现 类 class写代码逻辑更方便, 简洁. 封装的API更加易用;
内核代码中, 也经常看到类似类的封装. 自己尝试实现一个C语言类的功能

2.实例

目录结构:
main.c class_A.c class_A.h

1.类的头文件 class_A.h

class_A.h

#pragma once
#ifndef __class_A_h__
#define __class_A_h__typedef struct {int age;char name[32];int (*get_age)();char* (*get_name)();
}class_A;int class_A_init(class_A* self, int age, char* name);
void class_A_destroy(class_A* self);
class_A* new_class_A(int age, char* name);
void free_class_A(class_A* self);#endif

2.类的实现 class_A.c

class_A.c

#include <string.h>
#include <stdlib.h>
#include "class_A.h"static int _get_age(class_A* self) {return self->age;
};static char* _get_name(class_A* self) {return self->name;
};int class_A_init(class_A* self, int age, char* name)
{self->age = age;memcpy(self->name, name, sizeof(self->name) - 1);self->get_age = _get_age;self->get_name = _get_name;return 0;
}void class_A_destroy(class_A* self)
{}class_A* new_class_A(int age, char* name)
{class_A* p = malloc(sizeof(class_A));if (p == NULL)return NULL;class_A_init(p, age, name);return p;
}void free_class_A(class_A* self)
{class_A_destroy(self);free(self);self = NULL;
}

3.引用

main.c

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "class_A.h"int main()
{// 栈-局部变量方式class_A a;class_A_init(&a,18,"lili");printf("a name=%s, age=%d\n", a.get_name(&a), a.get_age(&a));class_A_destroy(&a);// 堆-申请内存方式class_A* b = new_class_A(19, "Malike");if (b) {printf("b name=%s, age=%d\n", b->get_name(b), b->get_age(b));free_class_A(b);}return 0;
}

4.编译与运行

gcc main.c class_A.c
./a.out

a name=lili, age=18
b name=Malike, age=19

3.总结

  1. 调用类的成员函数, 都要带一个类的指针
    1. 类似C++ 的 this , python 的 self
    2. 如果这个事情交给编译器做, 编码会快乐,简单一点
  2. get_name = static _get_name 封装形式, 提高API 简洁性
  3. class_A_get_nameclass_A.get_name 相比, class_A.get_name API调用方式, 看起来有层次性
    1. 我个人是比较推崇c with class
    2. 也支持未来c语法, 支持类class的语法
  4. C语言支持类的实现; 但C++/python 原生支持类的编写, 编码更简易方便
  5. 目前C++在项目中只使用了1年, 很多C++语法还不了解, 自认C++属于c with class的水平, 但感觉C++开发挺好用的, 没有大家说的那么难用.
    1. 只是c/c++的内存问题, 确实遇到很多次, 前期开发有遇到, 项目中期一些场景, 特定条件下也会有.
    2. 虽然本人熟悉gdb, valgrind可以快速定位排查内存问题, 但也要花费时间debug, 排雷踩坑, 也经常怀疑自己为什么会犯这个错.
  6. 大胆猜测, C++创始人 写了很多这种代码与封装API, 才发明C++, 原生支持类的语法

http://www.yidumall.com/news/70265.html

相关文章:

  • 浏览常见的b2c网站有哪些数据分析师资格证书怎么考
  • 美国网站做调查赚钱可信吗爱站关键词挖掘工具
  • python 做 网站关键词林俊杰mp3在线听
  • 青岛做外贸网站建设郑州专业seo哪家好
  • 公司做网站怎么收费百度网站推广费用多少
  • excel做公司的小网站百度seo关键词排名查询工具
  • 武汉做企业网站网站建设公司好
  • 规划电子商务网站流程市场营销师报名官网
  • 没有排名的网站怎么做建网站教学
  • 公司建设网站申请报告范文企业网站推广的形式有哪些
  • 海外流量渠道seo报告
  • 交互设计英文郑州网站优化外包顾问
  • 做时时彩网站平台软件下载怎么弄一个自己的网站
  • 网站建设方案书填写示例正规seo需要多少钱
  • 在线做网页的网站百度站长联盟
  • 创新的沈阳网站建设短链接在线生成器
  • wordpress页面后缀.html和合肥seo推广排名
  • 网站html静态化招聘seo专员
  • 网站建设进度表下载企业网站关键词优化
  • 显示网站翻页代码网推app
  • 佛山专业网站设计公司微信广告投放推广平台
  • 流放之路做长老环的网站广州seo好找工作吗
  • 做网页游戏网站需要什么投放广告
  • 程序员做图网站河南公司网站建设
  • 多语种网站seo系统培训哪家好
  • 合肥置地广场做网站的公司谷歌竞价推广教程
  • 洗头竖鞋带名片改良授权做网站不贵北京计算机培训机构哪个最好
  • 做暧暧视频网站在线深圳市企业网站seo营销工具
  • 怎么自己编写网站免费发布产品的平台
  • 网站建设 你真的懂吗东莞企业网站设计公司