前向声明
就是 在该类型还没有具体定义的时候
在前面声明一下该类型
如
struct A;//前向声明
typedef A STRa;//定义一个类型别名 前向声明可以定义别名
using STRa1 = A;//定义一个类型别名 前向声明可以定义别名
struct B
{
A* pA;//可以定义指针
STRa * pA1;//本质上就是 A类型的指针 别名并不创造新类型
STRa1 *pA2;
A aIns;//error 前向声明不可定义对象
A get(A b);//虽然不能定义对象 但定义在函数形参中可以
}
int main()
{
B b;
}
struct A
{
//没错是可以保持空的 默认空的为1字节
}
注意点
一:
前向声明不可定义对象
二:
前向声明可以定义指针变量
三:
前向声明可以在函数形参中定义对象 但在函数原形实现时 之前需要引入自定义类型的原形定义
四:
前向声明不可以访问(会提示你不完整类型)
五:
typedef 与 using 只是定义类型别名 而不是创造类型
typedef 语法
typedef 旧名 新名;
我记得函数指针 不太一样
typedef 返回值(*类型名称)(参数类型);
using 语法
using 新名 = 旧名;//c++11以后推荐使用这个