C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c – 包含在头文件与forward-declare中,并包含在.cpp中大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个B类,我想打电话给A类成员.所以:
1.
//a.h    
class B; 
class A 
{ 
private:
B* m_p; 
}; 

//a.cpp
#include b.h

2.
// a.h

#include <B.h> 

class A 
{ 
private: 
B * impl_; 
};

一个没有太多依赖关系的小项目发展的时候,哪个方式更好?

解决方法

你的第一种做法意味着在a.h中,B类的存在是已知的,而不是它的定义.这限制了你在a.h内可以做些什么.例如,您可以具有类型B *的变量,但不能具有类型B的变量(因为对于B类变量的声明,编译器必须能够看到B的完整定义).另外,如果你有变量B *类型,你不能取消引用指针(因为也是,B的定义必须是已知的).

因此,您的第二选择 – 没有这些问题 – 是首选,这是大多数人大部分时间使用的.

只有第一种方法可能有用的特殊情况.例如:

>如果.h文件相互包含(但是你可能会遇到一些进一步的问题,也涉及到包围守卫,这通常是困难的并且被避免);>如果b.h非常大且复杂,那么您可能希望尽可能避免包含它,因为它会减慢编译过程.

大佬总结

以上是大佬教程为你收集整理的c – 包含在头文件与forward-declare中,并包含在.cpp中全部内容,希望文章能够帮你解决c – 包含在头文件与forward-declare中,并包含在.cpp中所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。