一. 不好的习惯
// A.h
class A
{
public:
A();
};
// A.cpp
#include "A.h"
A::A(){}
/
// B.h
#include "A.h" // 这里包含头文件不好
// 因为 class B声明中只是用了A*
class B
{
public:
B();
A* m_pA;
};
// B.cpp
#include "B.h"
B::B() : A(new A)
{}
二. 好的习惯, 使用前向声明
// A.h
class A
{
public:
A();
};
// A.cpp
#include "File1.h"
A::A(){}
/
// B.h
class A; // 使用前向声明
class B
{
public:
B();
A* m_pA;
};
// B.cpp
#include "B.h"
#include "A.h"
B::B() : A(new A)
{}