前置声明
定义
所谓前置声明(forward declaration)是类, 函数和模板的纯粹声明, 没伴随着其定义....一般来说, 只有在自己的类中将某个类的对象作为数据成员使用时, 或者需要继承某个类时, 才应该包含那个类的头文件. 传统上来说, 前置声明可以在下列情况下使用:
不需要知道类的大小....前置声明可能会被库的后续更改所破坏. 前置声明函数或模板有时会妨碍头文件变动其API. 例如扩大参数类型, 加上自带默认参数的模板形参等....前置声明来自命名空间std::的symbol时, 其行为未定义....仅仅为了能前置声明而重构代码(比如使用指针成员代替对象成员)会使代码变得更慢更复杂.
delete一个不完整类型的指针时, 如果这个类型有non-trival的析构函数, 那么这种行为是未定义的.