为了账号安全,请及时绑定邮箱和手机立即绑定

关于头文件和类外定义

Teacher.cpp里面include了Teacher.h,但是Teacher.h却没有include  Teacher.cpp那么demo里面include   include.h 时,用到了Teacher.cpp???

正在回答

2 回答

所有使用了include的地方,你可以理解为将被包含的文件内容原样拷贝到该位置。所以,如果a.cpp在文件头包含了a.h,然后a.h在文件头包含a.cpp,那就会成为一条首尾相衔的蛇,陷入无限循环。换句话说,a.h不能包含a.cpp,完全没这个必要,因为a.h没有用到a.cpp中的任何东西。

为什么demo里包含了a.h,却能用上a.cpp里的东西?其实a.cpp是和main一起被编译到同一个project中的,在文件包含关系上并没有体现出来。demo包含了a.h的话,就能获得a中所有属性和方法的定义,便能使用。真正调用的时候,用到的是被编译好的a.cpp的内容。

1 回复 有任何疑惑可以回复我~
#1

慕前端9702840 提问者

非常感谢解答,但我还是有点问题,本视频中,demo.cpp包含了Teacher.h,同时Teacher.cpp也包含了Teacher.h,这样应该不是收尾相交的蛇呀。您的意思我还是不是很懂。.......
2016-09-01 回复 有任何疑惑可以回复我~
#2

慕前端9702840 提问者

是不是Teacher.h与Teacher.cpp直接存在某种关系啊.......................
2016-09-01 回复 有任何疑惑可以回复我~
#3

Adollar_life

请问是否在同一个工程,是不是通过把它们设在同一个projrct文件下,还是通过有相互套用的类似“teacher.h”文件判断的?
2018-05-24 回复 有任何疑惑可以回复我~

T.h和T.cpp之间的关系就是,T.cpp包含了T.h。demo.cpp也包含了T.h,这是OK的。

你的问题是,这种情况下,demo.cpp并没有和T.cpp发生直接关系,怎么能用到T.cpp里的内容。我的回答是,他们不是通过include的方式来实现的,而是通过在同一个project中编译来完成的。T.h就相当于是T.cpp的索引,通过包含T.h,demo.cpp就能在编译文件中找到T.cpp里的东西了

1 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C++远征之封装篇(上)
  • 参与学习       103381    人
  • 解答问题       732    个

封装--面向对象的基石,本教程力求帮助小伙伴们即学即会

进入课程

关于头文件和类外定义

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号