课程
/后端开发
/C++
/C++远征之封装篇(上)
Teacher.cpp里面include了Teacher.h,但是Teacher.h却没有include Teacher.cpp那么demo里面include include.h 时,用到了Teacher.cpp???
2016-08-31
源自:C++远征之封装篇(上) 6-5
正在回答
所有使用了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的内容。
慕前端9702840 提问者
Adollar_life
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里的东西了
举报
封装--面向对象的基石,本教程力求帮助小伙伴们即学即会
购课补贴联系客服咨询优惠详情
慕课网APP您的移动学习伙伴
扫描二维码关注慕课网微信公众号