前向声明的使用场景
当两个类相互包含造成循环调用的场景就需要使用到前向声明
A.h:
#pragma once
#ifndef _A_H
#define _A_H
#include "B.h"
class A
{
public:
A(void);
~A(void);
B b;
};
#endif
B.h:
#pragma once
#ifndef _B_H
#define _B_H
class A;
class B
{
public:
B();
~B();
//A a_; 环形相互包含是不允许的
//void fun(A a) { //错误,必须是指针或者引用
//
//}
void fun(A* a) {
}
A* a_;//前向声明不能实例化对象,只能定义指针或者引用
};
#endif
当用到前向声明的时候 不能实例化对象,只能定义使用指针或者引用
嵌套类:在类中在定义的类,嵌套类的方法体可以在类外去定义使用
局部类:在方法中定义的类,使用范围在方法内,其他域无法识别