前置声明,pImpl

梦想游戏人
目录:
C/C++

当多个类相互包含 使用时候,为了编译速度,降低文件编译依赖关系,通常采用前置声明来解决,如

#pragma once

class A;
class Test
{
	A *pimpl;//  OK ,指针,大小已固定,没问题
};

test的h文件就没必要包含A.h了。操作延迟到cpp文件,包含就好多了,

但是前置声明有时候有一些问题,以下代码

#pragma once

class A;
class Test
{
	A aa;// ERROR , A的大小是? 包含哪些操作?
};

因为是前置声明,类A 到底是怎样的 test并不知道,比如在test类里面要操作A 肯定要出错,因为是不完整的类型定义

为很好解决这一问题 ,常用手法是pimpl,和第一种代码类似。

其他:bridge模式

Scroll Up