C++中前置声明的定义是什么,在代码中语法格式是什么。最重要的是,前置声明存在的作用或意义,这个语法存在,保证是为了解决某类或者某几类问题。
首先看下,前置声明的定义,或者说成语法格式是什么样?如下形式:
//a.h
class B;
class A
{
....
private:
B *b;
};
大家如果在一个类的中定义另一个其他类型的成员变量时,例如A类中包含一个B类的成员变量,不管是实际类型(B b)还是指针类型(B *b),引用类型,此时我们会在A类的头文件中包含B类的头文件,例如#include"b.h",这是最常用,也是最方便的方法。但是假如A类定义包含一个B类的指针,且在头文件中没有对B类进行任何实际成员的调用,也就是没有B->method(),B->m_*的形式时,完全可以不引用B类的头文件,直接在A类定义前面声明class B,表示B类的存在。既然语法格式是这样的,那前置声明要解决什么样的问题呢?主要是两点:
- 解决两个类互相包含的问题,也是我们使用前置声明最常解决的问题。
- 解决编译依赖问题,防止某类的更改,导致包含该类其他类型重新编译。