首页  >   经验  >   类的前置声明的使用:循环引用和循环包含

类的前置声明的使用:循环引用和循环包含

查看 codexia 的博客 2015-06-24 18:20:51 3616
   前置   声明  
手机阅读 | 转发赚积分
手机收藏 | 分享给好友
简介前置声明类,在特定时候,需要用到这个,一般情况下,基本不用前置声明,它是不得已才为之的一件事,所以不要觉得很高大上的样子,然后随意使用。

    类的前置和函数的前置声明很类似,就是在使用前,先前置声明一下类,在你的B类声明之前,B类就需要你的A类,而你的A类又需要引用B类,这样就造成了循环。如果使用常规方法,始终无法解决。C++中提供类的前置声明,解决了这个问题,这和函数的前置声明类似又有很大不同。如果不是循环引用,大可不必使用前置声明类。
    另外还有一种情况,那就包含头文件。A类和B类分别在两个头文件中,然后是相互包含头文件。如果在头文件包含对方的头文件,则出现了循环包含。比如先编译A,则先包含B的头文件,然而在展开B头文件时,又包含A,展开A,又展开B,又展开A,结果就陷入了循环展开,搞不清楚了。
    为了解决上述问题,则必须使用类的前置声明来解决。
    第一个情况是使用还是比较好理解的,和函数的前置声明类似。不过使用时,只能是对象指针,不能直接在类中声明类对象成员,而是类指针。然而,循环包含却是很麻烦的事。因为包含是一个展开动作,如果遇到头文件中包含了其他头文件,则继续展开,就这样,如果有循环则出大问题了。此时就不要使用相互包含了,只要在一个类中进行包含就可以了。另外一个就使用前置声明,这样保证两个类都可以正确的编译,也告诉编译器这两个类名都表示的是一个类。
    使用了前置类声明,避免了循环包含和循环引用的问题。这个使用,确实也是不得已而为之,一般不推荐这样用。

    错误代码示例:

1.微信扫码
2.点击按钮,粘贴命令
自动刷新 手动刷新
命令:rd 52vSY 复制
提示:如果您发送了命令,自动刷新会展开全文。自动刷新最多60秒,超过60秒请点击手动刷新。
创作不易,汗水不止!为防止劳动果实被爬虫窃取,开启了反爬机制,需要您发送命令继续阅读。取关会再次出现此提示。一段时间后出现此提示,请再次发送即可。如有问题,请加客服微信Freeme007处理。感谢您的理解。
标注
评论
站内搜
百度搜
传送到手机
手机扫码,识别文字,完成传送x
加载中...
标注内容x
加载中...
添加标注x
文章标题:类的前置声明的使用:循环引用和循环包含
文章地址:http://www.cjjjs.com/article/6242015512018536
转载到个人博客,请在文末带上右侧内容(含超链接):本文转载自:类的前置声明的使用:循环引用和循环包含
收藏 0 点赞 0
公众号
微信赞赏
支付宝赞赏
领支付宝大红包
QQ群

相关阅读

  1. Redis数据类型和基本的操作命令 查找全网同类文章
  2. C++ Primer Plus 6th 5.8 复习题 第4题 前置++运算符和后置++运算符 查找全网同类文章
  3. C++ Primer Plus 6th 4.13 编程练习题 第5题 结构体的声明、初始化和使用 查找全网同类文章
  4. C++ Primer Plus 6th 4.12 复习题 第11题 声明指针并输出指针的值 查找全网同类文章
  5. C++ Primer Plus 6th 4.12 复习题 第9题 结构体变量的声明并初始化 查找全网同类文章
  6. C++ Primer Plus 6th 4.12 复习题 第8题 结构体类型声明 查找全网同类文章
  7. C++ Primer Plus 6th 4.12 复习题 第7题 声明并初始化string对象 查找全网同类文章
  8. C++ Primer Plus 6th 4.12 复习题 第6题 声明并初始化数组 查找全网同类文章
  9. C++ Primer Plus 6th 4.12 复习题 第3题 声明并初始化数组 查找全网同类文章
  10. C++ Primer Plus 6th 4.12 复习题 第2题 用array模板类声明变量 查找全网同类文章
分享到:
分享文章[类的前置声明的使用:循环引用和循环包含]到QQ空间

相关阅读

猜您感兴趣