社区
C++ 语言
帖子详情
类的成员函数放在头文件中定义和放在源文件的区别是什么?
inauage
2007-07-05 10:24:00
rt.
悉心请教.
...全文
1647
11
打赏
收藏
类的成员函数放在头文件中定义和放在源文件的区别是什么?
rt. 悉心请教.
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Laura_li
2008-11-10
打赏
举报
回复
确实是啊! 我也在看这本书
好书啊
KenYuan2016
2007-07-09
打赏
举报
回复
产生的结果就是自动内连。
KenYuan2016
2007-07-09
打赏
举报
回复
林锐
² 【建议1-2-1】头文件中只存放“声明”而不存放“定义”
在C++ 语法中,类的成员函数可以在声明的同时被定义,并且自动成为内联函数。这虽然会带来书写上的方便,但却造成了风格不一致,弊大于利。建议将成员函数的定义与声明分开,不论该函数体有多么小。
inauage
2007-07-09
打赏
举报
回复
看看B.S书上说是这样的:
一个类、模板或者在线函数的两个定义能够被接受为同一个惟一定义的实例,当且仅当
[1]它们出现在不同编译单位里。
[2]它们按一个个单词对应相同:
[3J这些单词的意义在两个编译单位里也完全一样。
看来类的定义和变量的定义还是有些不同的,说明可以“重复定义“,只要在不同地方定义的形式是一样的。
jxlczjp77
2007-07-09
打赏
举报
回复
我的理解是:
如果函数在头文件中定义(假设这个头文件叫a.h),那么当这个函数有改动时,所有包含了a.h文件的.cpp文件将全部需要被重建,如果这个头文件被多次引用的话,带来的副作用将非常的大。
但如果函数不在.h中定义的话,则改动带来的副作用将小得多,只有当前改动的文件从新编译一下即可了
jxlczjp77
2007-07-09
打赏
举报
回复
我的理解是:
inauage
2007-07-06
打赏
举报
回复
哦,了解。我做实验的时候头文件只包含了一次,所以成员函数定义在头文件中也没问题。
看来“单一定义规则“还是没错的,除了某些特殊情况。谢谢诸位。
Inhibitory
2007-07-06
打赏
举报
回复
1
成员函数一般是不可以在头文件中定义的,只能在头文件中声明。因为函数只能有一次定义,而可以有多次声明,当头文件被多次包含的时候,如果头文件中有函数定义就违背了这个原则~
-------------------------------------------------------------------------------------
#ifndef XXX_H
#define XXX_H
class CA {
......
}
#endif
如果头文件中没有这样定义的话,多次包含一样编译不通过.
成员函数在不在头文件中定义,其实都没多大关系,但如果你的程序是提供给别人作为库,而在头文件中定义成员函数,别人就会看到你程序的实现,在.cpp中定义,人家使用时调用的是库文件,看到的只是你的头文件中的声明,而不知道你是怎么实现的(呵呵,商业机密).
还有一些规则是,有些成员函数是必须在类声明中定义的,如类的静态成员函数,inline函数.
canybox
2007-07-06
打赏
举报
回复
没区别,也可以放在头文件中,比如INLINE的
totoorange
2007-07-06
打赏
举报
回复
成员函数一般是不可以在头文件中定义的,只能在头文件中声明。因为函数只能有一次定义,而可以有多次声明,当头文件被多次包含的时候,如果头文件中有函数定义就违背了这个原则~
所以,成员函数一般都在头文件中声明,而在源文件中定义~
Inhibitory
2007-07-06
打赏
举报
回复
其实还不止这些,还有一个关于不在头文件中实现类的定义的是编译时的速度问题:
在头文件中尽量不在包含其他的头文件,而如果要用到其他的类时,在类的外部声明一下所用类的名字,然后把与之相关的头文件包含在类的实现文件中,即.cpp文件中,否则每次编译的时候都要去编译所用到的头文件.
呵呵,其实我也是比较糊涂,原因也不是太明白,但在高质量C++编程中好像就这么说过,反正就是尽量把头文件与实现文件分开.
《第二章第2节浏览信息》.doc
掌握利用浏览器浏览信息的基本方法;学会保存网页、文字、图片的方法
定义
一个年月日的
类
(面向对象程序设计)
定义
一个年月日的
类
(面向对象程序设计布置的作业内容),资源包含有
头文件
,
源文件
和测试文件(最后一个没用上但还是打包上来了)
C++
类
定义
代码的分离
类
文件 实际工程
中
,对一个
类
的说明、架构、描述方法是: 往往分成
头文件
和实现的
源文件
,来实现代码的分离 然后,
源文件
中
包含
类
的
头文件
…
头文件
的包含问题:
类
对应的实现文件cpp、main主函数文件,都要包含
类
的
头文件
,因为要“单独”编译; main函数、其他文件要使用这个
类
的时候,都只需要包含该
类
的
头文件
足矣( 使用时、“编译”时, 无非是引用该
类
的成员和方法),而这些成员和方法已经在
头文件
中
声明(或
定义
了); 至于具体的实现代码,在链接的时候,是由linker “自动“ 寻找该
类
对应的
源文件
cpp, 过程我们不必关心.
头文件
vs2008 多重继承虚基
类
的简单应用
虚基
类
的简单应用举例,分别把不同
类
的声明
放在
不同的
头文件
中
,把不同
类
的实现
放在
不同的
源文件
中
,把
类
的声明和
成员函数
的
定义
进行分离,初步实现了C++在实际工作
中
的编程思想,信息屏蔽。
类
的
成员函数
在
头文件
中
定义
和在
源文件
中
定义
的
区别
成员函数
一般是不可以在
头文件
中
定义
的,只能在
头文件
中
声明。因为函数只能有一次
定义
,而可以有多次声明,当
头文件
被多次包含的时候,如果
头文件
中
有函数
定义
就违背了这个原则。所以,
成员函数
一般都在
头文件
中
声明,而在
源文件
中
定义
。 转载于:https://blog.51cto.com/shangwei/548060...
C++ 语言
64,281
社区成员
250,470
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章