C++前置声明的几种方式
C++的前置声明可以避免编译依赖,以此可以增加编译速度。同时可以隐藏实现细节,令接口更加简洁。
那么C++中可以有哪些前置声明的方式呢?
- 声明全局作用域中类型的名字
- 声明命名空间中类型的名字
- 声明模板类型名字
当然,还有函数的前置声明,但函数声明太过于常见就不列举。
注意,我没有找到内嵌类型的前置声明方法,也就是对于这样的类型:
class Foo
{
class SubFoo {};
};
还没有办法去前置声明Foo::SubFoo
。
下面列举一下前置声明的代码:
class Foo; // 前置声明全局作用域中的类型名字
struct Bar;
namespace Proto
{
class SCFoo; // 声明命名空间中的类型名字
}
template class Goo; // 声明一个模板类型名字