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

关于本节教程demo.cpp中include的疑问。

直接按照老师步骤做,无法通过编译,在demo.cpp引入Teacher.h头文件后可以运行,当引入Teacher.cpp文件却无法运行。请问老师,Teacher.h文件没有类的具体实现也没有include Teacher.cpp文件,为什么会编译成功呢?是IDE的作用还是编译器的作用?原因是因为这两个文件的名字都叫Teacher么???

正在回答

1 回答

在使用一个类时,只需要提供类定义即可,无需知道类实现,就可以进行编译。 一般类定义都是写在 .h 文件中的,所以include .h文件即可。

类定义相当于定义了类可以进行的操作,代码只要知道了类定义就可以操作其成员。至于这些成员函数是怎么实现的,编译器在编译这个源文件时并不关心,所以无需知道类实现就可编译。

当然要使整个程序能执行,还是得实现相应的成员函数,只不过那也许是写在其他cpp文件中的。这些写在其他cpp文件中类的实现会被链接机制找到,最终链接成可执行文件。


为什么不能include .cpp: 在C/C++中,所有变量函数都只能定义一次。而类实现一般写在.cpp文件中,如果你在代码中include了.cpp——会导致不同源文件中可能会include类实现多次——就会造成类成员函数的定义出现在多个源文件中,这会在链接时引发重定义错误。

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

举报

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

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

进入课程

关于本节教程demo.cpp中include的疑问。

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信