//#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