不完整类类型:已经申明但尚未定义的类型。
不完全类型不能用于定义变量或者类的成员,但是用不完全类型定义指针或者引用是合法的。(类的前置申明)
这里需要区分引用申明和定义申明的区别:
引用申明:告诉编译器这个类型已经存在了,但此时编译器并不知道需要给该类型的对象分配多少字节内存。
定义申明:描述了该类型的细节,编译器由此可以知道需要给该类型的对象分配多大的内存。
在c++中不完整类型的变现形式有哪些呢?
答:
- 使用void直接申明一个变量
- 未定义长度的数组,比如:int arr[]
- 前置申明的类、结构体、联合体, 比如:class A; struct A; union A
切记:代码中出现“使用不完整的类型”错误的时候,如果该对象是一个自定义类类型,那么必然是由于前置申明引起的,这个时候就要检查该类型是否已经定义。