何时使用未声明类但具有函数定义的头文件

6 c++ header file

我对C++很新,我看到一堆代码在头文件中有方法定义,并且它们没有将头文件声明为类.有人可以向我解释为什么以及何时会做这样的事情.这是一种不好的做法吗?

提前致谢!

Kon*_*lph 11

这是一种不好的做法吗?

不一般.有很多库header only,这意味着它们只提供头文件.这可以看作是编译库的轻量级替代品.

但更重要的是,有一种情况是您不能使用单独的预编译编译单元:模板必须专门用于声明它们的同一编译单元.这可能听起来很神秘,但结果很简单:

函数(和类)模板不能在cpp文件中定义并在别处使用; 相反,它们必须直接在头文件中定义(有一些值得注意的例外).

另外,C++中的类纯粹是可选的 - 虽然你可以用C++编写面向对象的程序,但许多优秀的代码却没有.类补充了C++中的算法,而不是相反.