A "forward declaration" is a declaration of an entity without an associated definition.
“前向声明”是没有关联定义的实体声明。
// A.h
#include "B.h"
class A { B b; };
// B.h
#include "A.h"
class B { A a; };
// b.h:
struct B {};
struct D : B {};
// good_user.cc:
#include "b.h"
void f(B*);
void f(void*);
void test(D* x) { f(x); } // Calls f(B*)
若把#include换成前置声明,由于声明时不知道D是B的子类,test()中f(x)就会导致f(void*)被调用,而不是f(B*)。
尽可能避免使用前向声明。相反,请包含所需的头文件。
https://google.github.io/styleguide/cppguide.html#Forward_Declarations
END
点赞、转发加关注,一键三连,好运年年
关注公众号后台回复数字688可获取嵌入式相关资料
往期推荐
C语言中的不完整类型
为什么C语言执行效率高,运行快?
二维数组与二级指针是好兄弟吗?
C语言实现最小二乘法