关于c++前向声明的问题。为什么静态成员也能使用前向声明?

JinCraft 2013-04-18 05:40:07
第一种前置声明:

class A;
class B
{
static A object;

};

第二种:

class A;
class B
{
A object;

};

这两种有区别吗?为啥第一种能通过编译第二种通不过?
要是指针型成员我能够理解,因为所有指针所占字节数都一样,为啥静态成员也能这样声明?
我猜是因为类初始化的时候不会初始化静态成员,静态成员是另外单独初始化的,不知道对不对。
...全文
191 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
FWJ_mag-liebe 2013-04-19
  • 打赏
  • 举报
回复
仙路尽头谁为峰,一见无始道成空!
老灰狼 2013-04-19
  • 打赏
  • 举报
回复
静态成员变量是不占用类对象空间的,所以可以在类型A大小不确定的时候在类B中声明;对B的对象没有影响;
ForestDB 2013-04-18
  • 打赏
  • 举报
回复
1L有点道理,可以照这个思路写程序试试。
snake_xiongyang 2013-04-18
  • 打赏
  • 举报
回复
我猜测 类里面的static成员也只是声明的一种 static成员还需要在别的地方进行定义,那里才是需要用到A的全部信息的地方

class A;
class B
{
static A object;
 
};
A B::boject ;

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧