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

c生万物系列(面向对象:封装)

本系列博客主要介绍c语言的一些屠龙技,里面包含了笔者本人的一些奇思妙想。

该系列博客笔者只是用作记录。如果你偶然找到了这篇博客,但是发现不知所云,请不要过多投入时间,可能笔者本人那时候也看不懂了。

笔者决定用c语言模仿高级语言,例如模拟面向对象:封装,继承,多态。参考的语言是Java,后面打算把java设计模式抽象成c版本。当然,源码只使用c语言和汇编。

先说面向对象的封装:在Java中,有public,private对成员进行封装,在c语言中我们又该怎么办呢?

public不用模拟,那么private要怎么模拟呢?

让笔者先介绍第一种示例:结构体定义放在源文件,接口和声明放在头文件。

如果使用pri->id直接访问,会出现报错,必须使用对应的接口进行访问。

pri.c文件:

笔者再介绍第二种示例:使用static关键字。

static关键字确保声明的对象只能在本文件内被访问,其实也可以间接实现private。

http://www.lryc.cn/news/405136.html

相关文章:

  • 当当网数据采集:Scrapy框架的异步处理能力
  • React——useEffect和自定义useUpdateEffect
  • Hadoop大数据处理架构中ODB、DIM、DWD、DWS
  • 【刷题汇总 -- 爱丽丝的人偶、集合、最长回文子序列】
  • 基于vue3 + vite产生的 TypeError: Failed to fetch dynamically imported module
  • 批量自动添加好友,高效拓展人脉圈.
  • Web开发:一个可拖拽的模态框(HTML、CSS、JavaScript)
  • 【深度学习】fooocusapi,docker,inpainting图像
  • 算法017:二分查找
  • 谷粒商城实战笔记-37-前端基础-Vue-基本语法插件安装
  • mybatis中的缓存(一级缓存、二级缓存)
  • 实现自动化采购:食堂采购系统源码开发详解
  • linux、windows、macos清空本地DNS缓存
  • 领夹麦克风哪个品牌好,电脑麦克风哪个品牌好,热门麦克风推荐
  • 【第5章】Spring Cloud之Nacos服务注册和服务发现
  • Springboot 启动时Bean的创建与注入(一)-面试热点-springboot源码解读-xunznux
  • 单调栈(随缘复习到了,顺手刷了)
  • 学习测试10-3自动化 web自动化
  • 安防视频监控EasyCVR视频汇聚平台修改配置后无法启动的原因排查与解决
  • 爬虫学习2:爬虫爬取网页的信息与图片的方法
  • MySQL定时备份数据,并上传到oss
  • 极速删除 node_modules 仅3 秒()
  • vue this.$refs 动态拼接
  • 一次搞定!中级软件设计师备考通关秘籍
  • 第十六讲 python中的序列-列表简介-特点-常用方法-创建-添加-删除-访问-切片-排序-复制-反转
  • 大模型日报 2024-07-22
  • Electron 的open-file事件
  • 前端面试 vue 接口权限控制
  • 【DevOps系列】构建Devops系统
  • ABAP打印WORD的解决方案