前置声明和包含头文件的区别(待补充)

//#include"A.h"
class A;
class B
{
public:
    //A a;  //编译器为a分配内存必须知道a的大小,如果使用前置声明,则得不到类A的定义,无法创建对象a;
    A* pa;    //而指针在创建时,只需要给他分配4个字节就好了(32位下)
    A & ra;    
    A fun(A a);//函数中存在A类的对象时,并不会出现问题,大概是因为普通函数不占用内存.
  static A sa; //!!为何他可以通过编译呢?? sa是需要占空间的呀。
   }

 

参考文章:https://blog.csdn.net/fallStones/article/details/6266632?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase

https://blog.csdn.net/fallStones/article/details/6266632?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase

posted @ 2020-06-19 00:09  心媛意码  阅读(117)  评论(0编辑  收藏  举报