我刚刚接受采访。有人问我什么是“前向声明(forward declaration)”。然后有人问我,它们是否与前向声明(forward declaration)有关。
我无法回答第二个问题。网上搜索没有显示任何有趣的结果。
那么,有人知道与使用前向声明相关的任何危险吗?
最佳答案
前向声明是C++缺少模块(要在C++ 17中修复?)并使用 header 包含的症状,如果C++具有模块,则根本不需要前向声明。
前向声明不少于“契约(Contract)”,通过使用实际上可以向保证您将提供某种实现(在同一源文件中,或稍后链接二进制文件)。
的缺点是,您实际上必须遵守契约(Contract),这不是什么大问题,因为如果您不遵守契约(Contract),编译器将以某种方式提早投诉,但是在某些语言中,代码只需执行即可,而无需“保证自己的存在”(谈到动态类型语言)