我有一个困扰我的基本问题.
在类中使用类时,我可以在头文件中定义要使用的类的标题.我已经看到了两种方法,并想知道这两种方法之间的区别?
EX1
#include "ClassA.h"
class ClassB {
public:
ClassB();
~ClassB();
ClassA* a;
};
#endif
Run Code Online (Sandbox Code Playgroud)
ex2这是另一种方法.ClassA标头将在ClassB源文件中定义.
class ClassA;
class ClassB {
public:
ClassB();
~ClassB();
ClassA* a;
};
#endif
Run Code Online (Sandbox Code Playgroud)
这两种方法有什么不同?
classA当您包含类定义时,编译器会知道comlpete布局.
第二种语法称为前向声明,现在classA是编译器的不完整类型.
对于不完整类型,
您可以:
但你不能:
因此,前向声明类可能会更快,因为编译器不必将整个代码包含在该头文件中,但它限制了如何使用该类型,因为它变为不完整类型.
| 归档时间: |
|
| 查看次数: |
873 次 |
| 最近记录: |