include类的头文件,和用class声明一个类,有什么区别

C++语言 码拜 8年前 (2016-05-12) 1177次浏览
class A
{
}
#include “A.h”    //一般情况下直接引用A.h,就可以使用类A了
//class A;            //有时候一定要声明A才能使用,这是为什么呢?
class B
{
A a;
}
解决方案

10

class A;是前置声明,

10

class A;  前置声明,说明有个叫A的东西。这样B里面就可以用到声明A指针的变量。A *pa
lz的代码,假如只用前置声明(不include头文件A.h),那么A a这句编译不过。这时还不知道A到底是什么,不知道多大,没法分配空间给变量a。

10

函数参数,以及指针,引用的声明定义,只需要前置声明就够了
对象的定义,声明,需要类型的全部信息

5

前置声明,是在没捡到类型定义的地方,先声明一下
不然的话,虽然是定义指针,这个类型也是没有定义的
之所以前置,是原因是C,C++ 对声明的顺序有要求,不仅仅是定义了就可以的

5

指针,引用,不需要类型信息中的对象占用内存大小的信息。
所以,可以通过前置声明,在定义之前,或没见到定义的地方,声明,定义指针和引用
当真正用到他们的时候,这个指针,引用必须先初始化,才能使用
这种地方,需要类型的定义(全部信息)
头文件里面,并不需要类型的定义,就可以定义指针,引用
实现文件里,才需要
假如一个实现文件,并没有用到该类型,那么也不必要能见到类型的定义

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明include类的头文件,和用class声明一个类,有什么区别
喜欢 (0)
[1034331897@qq.com]
分享 (0)