社区
新手乐园
帖子详情
由面向对象想起的:关于头文件.h和类class的一点疑惑
eudemon_cn
2011-01-01 01:22:09
都说类是面向对象的特征,在浅学了一段时间,让我想起了C里的头文件。
我个人是这样理解的:头文件里包涵的是各种功能函数。在使用的时候,通过预处理指令把他们包涵进来。
类包涵的也是功能函数,还有所谓的属性变量。在使用的时候是通过声明定义的方式。
在这一点上是否可以说明头文件和类是一样的呢?或许是叫法的不同?总觉得它们之间有种相似的地方也感觉有不同的地方,可是就是想不明白到底是哪里?请熟悉的人给予帮助~~谢谢!!
...全文
211
12
打赏
收藏
由面向对象想起的:关于头文件.h和类class的一点疑惑
都说类是面向对象的特征,在浅学了一段时间,让我想起了C里的头文件。 我个人是这样理解的:头文件里包涵的是各种功能函数。在使用的时候,通过预处理指令把他们包涵进来。 类包涵的也是功能函数,还有所谓的属性变量。在使用的时候是通过声明定义的方式。 在这一点上是否可以说明头文件和类是一样的呢?或许是叫法的不同?总觉得它们之间有种相似的地方也感觉有不同的地方,可是就是想不明白到底是哪里?请熟悉的人给予帮助~~谢谢!!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
harleypang
2011-01-18
打赏
举报
回复
头文件和类可是两种概念,别混淆了!
类是对具体事物的共同特征的抽象;
而头文件一般是定义函数声明,全局函数等,当然,类的定义一般也可以放到头文件中。
ForestDB
2011-01-18
打赏
举报
回复
LZ还是多写点代码先吧。
BuleRiver
2011-01-05
打赏
举报
回复
还是很不一样的。写的代码多了就知道了。
eudemon_cn
2011-01-05
打赏
举报
回复
其实,我最初的意思,仅仅是觉得,类和头文件单纯在代码的组织上有点像。都是函数(方法)变量(属性)的集合。在使用上,个人感觉也有点类似,头文件里的函数是通过包涵进来,或者是通过.引用。类是通过创建实例和.引用。我是单纯从这个角度上理解,感觉有点类似。至于OO和过程,不是在我想的范围里。不过感谢各位的热情解答和帮助!
ForestDB
2011-01-04
打赏
举报
回复
[Quote=引用楼主 eudemon_cn 的回复:]都说类是面向对象的特征,在浅学了一段时间,让我想起了C里的头文件。
我个人是这样理解的:头文件里包涵的是各种功能函数。在使用的时候,通过预处理指令把他们包涵进来。
类包涵的也是功能函数,还有所谓的属性变量。在使用的时候是通过声明定义的方式。
在这一点上是否可以说明头文件和类是一样的呢?或许是叫法的不同?总觉得它们之间有种相似的地方也感觉有不同的地方,可是就是想不明白到底是哪里?请熟悉的人给予帮助~~谢谢!!
[/Quote]
面向对象是一种思想,封装,继承和多态是其核心特征;
这就是说,就算是C语言,如果能够很好的表现出这三个特征,我们也可以说它的代码是OO的;
当然,直接用class这样第一类(first class)的类型来构造OO,是最直接,效果最好的。
至于头文件,不过只是编译过程的一种实现,来达到接口(函数声明都在头文件里面,提供功能原型)和实现(具体的函数的定义放在C文件里面)的分离,C++的头文件和实现文件也是如此。关于这个,可以好好的看看编译的过程。
处理LZ疑惑的最好的方法,就是不要把两个完全不同领域的东西放在一起思考,各自看看各自的那块(这里要看的就是OO的思想以及某种具体表现比如C++,另一个要看的就是编译的过程),当各自相关的都比较清楚的理解后,就是融会贯通的时候,也不会提这样的问题了。
ForestDB
2011-01-04
打赏
举报
回复
OO只是种思想,封装,继承和多态是其核心特征;
这就是说,就算是C语言,如果能够很好的表达上述特征,我们也可以说它的代码是OO的;
当让,用class这样第一类的类型来构造OO当然是最直接有效的。
头文件是编译过程中,用来分离接口(头文件中只有函数的声明,用来提供功能原型)和实现(C文件中提供函数的具体定义即实现)的一种手段,C++的头文件和实现文件也是如此。具体的建议看看编译的过程(我的博客中有篇关于hello world的解析)。
解决LZ的疑惑的最好的方法,就是不要把两个完全不同领域的东西拿来比较,一是去看OO思想及其某种实现比如C++,一是去看编译的过程,当两种都有了比较清晰的理解之后,就是融会贯通的时候,也不会提出这样的问题了。
wonder2008
2011-01-02
打赏
举报
回复
你这样理解也接近了点,不过不要忘了还有某些抽象类只包含了纯虚接口而没有任何具体实现。
从类的概念的描述就可以很好的理解这个东西:
就是具有相同属性和方法的对象的统称。
在没有实例化对象之前,这个类的属性和方法还都是死的;
当然某些抽象类是不能被实例化对象的;
被实例化的对象才具有相应各自独立的属性,以及根据他的不同的方法参数不同的行为。
eudemon_cn
2011-01-01
打赏
举报
回复
那么说,类应该是接口的具体实现?这样理解可以吗?
wonder2008
2011-01-01
打赏
举报
回复
不要把具体的东西跟抽象的东西混淆开来:
头文件是定义各种接口的地方,是个具体的东西,打个比方说就像是书目的东西,你可以通过包含这个书目知道你可以找到什么书,但是你并不知道每本书里面的具体内容。
而类是个抽象的东西,只不过这些抽象的接口也放到具体的头文件当中了。
eudemon_cn
2011-01-01
打赏
举报
回复
要是这样的话,我可否理解成类应该算是头文件“加强版”了,相当于对头文件的扩展,因为它引进了新定义,比如您说的,封装,继承等等……
云博士的AI课堂
2011-01-01
打赏
举报
回复
你的感觉也是对一些的,但是你需要了解的是面向对象的实质,比如封装、继承和多态等,但是不管怎么样的面向对象设计,最终的具体实现都是过程化的
高质量C/C++编程指南
(3)程序的实现体(包括数据和代码)假设定义文件的名称为header.cpp,定义文件的结构参见如下://版权和版本说明见2.1.1,此处省略#include "header.h" //引用
头文件
...//全局函数的实现体...//
类
成员函数的实现体...
C++复数运算
抽象数据
类
型(ADT)的定义与实现: 复数a+bi,a为实部,b为虚部,请用C或C++语言定义和实现复数抽象数据
类
型。 要求能够输入两个实数作为实部和虚部,用于初始化(创建)一个复数,对任意的两个复数,能够...
effective c/C++
版权和版本的声明位于
头文件
和定义文件的开头(参见示例1-1),主要内容有: (1)版权信息。 (2)文件名称,标识符,摘要。 (3)当前版本号,作者/修改者,完成日期。 (4)版本历史信息。 /* * ...
推荐-高质量C++/C编程指南(林锐)
1.1 版权和版本的声明... 11 1.2
头文件
的结构... 12 1.3 定义文件的结构... 13 1.4
头文件
的作用... 13 1.5 目录结构... 14 第2章 程序的版式... 15 2.1 空行... 15 2.2 代码...
高质量C/C++编程
1.1 版权和版本的声明... 11 1.2
头文件
的结构... 12 1.3 定义文件的结构... 13 1.4
头文件
的作用... 13 1.5 目录结构... 14 第2章 程序的版式... 15 2.1 空行... 15 2.2 代码...
新手乐园
33,311
社区成员
41,784
社区内容
发帖
与我相关
我的任务
新手乐园
C/C++ 新手乐园
复制链接
扫一扫
分享
社区描述
C/C++ 新手乐园
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章