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

4055 人浏览 | 时间: 2015-06-24 18:20:51 | 作者: codexia

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

    错误代码示例:

请微信扫码阅读。
为防止恶意爬虫,
已开启反爬机制,
理解哟~~~~
标注
评论
站内搜
百度搜
传送到手机
手机扫码,识别文字,完成传送x
加载中...
标注内容x
加载中...
添加标注x
收藏 0 点赞 0

相关阅读