C语言中面向对象编程
C语言中面相对象的编程
面向对象的重要思想就是数据隐藏,在面向对象语言中,对象可以包含私有变量。这样我们可以说他们具有内部状态,这些内部状态对其他对象是透明的。全局变量可以通过设置变量作用域来模拟私有变量(甚至友元对象)。
首先是C语言中公共变量的对等实现
这些全局变量会导致意大利面条式的代码。为了避免这些问题,可以在函数外部用static关键字定义一个私有变量,并且定义在文件的头部。
static 关键字在不同的地方用处不一样。
一组松散的变量有点难以追踪,所以可以考虑将一个模块内部的私有变量封装到结构体中:
struct sLogStruct* LogInit(){
tBoolean logOn;
static enum eLogLevel outputLevel[NUM_LOG_SUBSYSTENS];
}sLogStruct;
Static struct sLogStruct gLogData;
如果想让代码看起来像个对象,那么这个结构体就不应该是这个模块的一部分,而英国在初始化的时候创建(分配内存malloc),然后将其返回给调用函数。
struct sLogStruct *LogInit(){
int I;
struct sLogStruct *logData = malloc(sizeof(*logData));
logData->logOn = FALSE;
for(I = 0; I
{
logData->outputLevel = eNoLogging;
}
return logData;
}
这样就可以想对象一样传递这个结构体了。malloc了的变量记得要释放,在接口中会增加一个函数去释放就可以了。
声明:
本文于网络整理,版权归原作者所有,如来源信息有误或侵犯权益,请联系我们删除或授权事宜。
C语言中面向对象编程相关推荐
- C++学习笔记:(七)C语言实现面向对象编程
面试官:C和C++有什么不同? 应聘者:一个是面向过程,一个是面向对象. 这样的答案在我看是不完全正确,因为面向过程编程和面向对象编程是编程思想,C++可以用面向过程的思想编程,同样,C语言也可以用面 ...
- C 语言实现面向对象编程
C 语言实现面向对象编程 1.引言 面向对象编程(OOP)并不是一种特定的语言或者工具,它只是一种设计方法.设计思想.它表现出来的三个最基本的特性就是封装.继承与多态.很多面向对象的编程语言已经包含这 ...
- 在C语言中以编程的方式获取函数名
在C语言中以编程的方式获取函数名 仅仅为了获取函数名,就在函数体中嵌入硬编码的字符串,这种方法单调乏味还易导致错误,不如看一下怎样使用新的C99特性,在程序运行时获取函数名吧. 对象反射库.调试工具及 ...
- C语言中面向对象的尝试
C语言中面向对象的尝试 作者:周志明 说明:程序中关于画直线和园的算法,请参阅图形学相关知识.算法部分写在在main函数后. 运行环境:TC2.0(运行时候注意路径问题) #include<gr ...
- 一步步分析-C语言如何面向对象编程
这是道哥的第009篇原创 一.前言 在嵌入式开发中,C/C++语言是使用最普及的,在C++11版本之前,它们的语法是比较相似的,只不过C++提供了面向对象的编程方式. 虽然C++语言是从C语言发展而来 ...
- C#中面向对象编程中的函数式编程
目录 介绍 面向对象编程中仿真的函数式编程技术 粒度不匹配 面向对象的函数式编程构造 相互关系函数式编程/面向对象程序设计 C#中的函数式编程集成 函数级别的代码抽象 操作组合 函数部分应用和局部套用 ...
- ctor c语言,一步步分析-C语言如何面向对象编程
这是道哥的第009篇原创 一.前言 在嵌入式开发中,C/C++语言是使用最普及的,在C++11版本之前,它们的语法是比较相似的,只不过C++提供了面向对象的编程方式. 虽然C++语言是从C语言发展而来 ...
- c语言实现面向对象编程
文章目录 概述 框架介绍 基类 c++基类 c 实现基类 派生类 c++派生类 C实现派生类 基于模型的多重继承 C++的多重继承 c的多重继承 对象创建和使用 C++ 应用 C应用 概述 有一种 ...
- 老汤回味——C语言与面向对象编程
今天的文章我们来看看如何结合面向对象的思想使用C语言写出结构良好的代码.直接看代码,然后我们来分析一下代码中的含义.首先是头文件user.h: #ifndef USER_H #define USER_ ...
最新文章
- apache 网站跳转至同一页面(可用于当网站在备案时显示告示)
- IT团队应如何保障分支机构的网络安全—Veclou微云
- 森林病虫防治系统 (十一)
- Maven web项目创建
- highchart 柱状图,列宽自适应(x轴是时间的特殊情况)
- getresource 路径转义_java中的相对路径和绝对路径
- python 无头模式 绕过检测_网络爬虫之使用pyppeteer替代selenium完美绕过webdriver检测...
- cv方向有哪些_计算机视觉(CV)与交通的千丝万缕
- Git push - fatal: write error: Bad file descriptor
- 原画插画零基础自学|原画基础入门教程
- android viewholder静态,Android listview viewholder
- 【U3D方向专职猎头】 大厂、高薪职位资源多 非U3D资深勿扰 工作地点北京、深圳、上海、杭州、广州、成都、加微信17512088053
- Photoshop CC2017软件安装教程
- Cacti 无法启用气象图和气象图中图标添加
- AutoRunner4.5结合真实项目crm客户管理系统进行界面功能自动化测试教学资料(登录)
- 性能评测方法、各评测项标准总结
- 【IAP支付之三】苹果IAP安全支付与防范 receipt收据验证
- 在微软从测试开发工程师到主管
- DEDECMS安装使用教程
- 一名3年工作经验的Java程序员应该具备的技能