首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

请教啥时候用include "XXX.h"什么时候用提前声明class XXX;

2012-03-08 
请问啥时候用include XXX.h,什么时候用提前声明class XXX ?请问啥时候用include XXX.h,什么时候用提

请问啥时候用include "XXX.h",什么时候用提前声明class XXX; ?
请问啥时候用include "XXX.h",什么时候用提前声明class XXX; ?
XXX 和 YYY 都是我要定义的类,但是他们可能需要相互调用。所以不太明白。还请各位指教,非常感谢!

[解决办法]

C/C++ code
class xxx;class yyy{  public:    class xxx * x;//must be pointer};class xxx{public:    class yyy *y;//must be pointer};
[解决办法]
#include “xxx.h" -------- 包含
class xxx; -------- 前置声明

什么时候需要使用”包含“ (比如说xxx的头文件)
a 需要声明 xxx 类型的对象 或者
b 需要(直接/间接)访问xxx的成员

// 例子1
#include "xxx.h"
class yyy{ 
xxx x; // rule a
void foo() { cout << x.getSize() << endl;} // rule b
};

// 例子2
#include "xxx.h"
class yyy{ 
xxx *x; // 如果没有下面的foo()函数,则仅需要前置声明
void foo() { cout << x->getSize() << endl;} // rule b
};


[解决办法]
请问啥时候用include "XXX.h"
============================
当需要 XXX.h 中的信息时, include 之


什么时候用提前声明class XXX;
============================
在没有定义好 XXX时,已经需要使用该类型定义一个指针或者引用【不能是定义实例】,
那么需要使用 前置声明 class XXX;
[解决办法]

只要有可能,就将XXX.h放在YYY.cpp中;而不放在YYY.h中。如此,降低文件间依赖复杂度。

为了支持这种可能性,在YYY.h中,将要使用到的 ccc类型 进行前导声明。

但是,有时候,在YYY.h中,可能要分配 ccc类型 的内存,编译器需要知道它的尺寸。这时候,需要将 XXX.h 放在 YYY.h 中。对于这种情况,更高阶的做法,可以考虑是否采用pImpl惯用手法。

热点排行