转发声明和<iosfwd>

C ++ Telltales第4部分:

这是我的C ++ Telltales系列的第四部分,我在其中分享了一些使用C ++的提示和技巧。 请随时在 这里查看 该系列的其他部分

C ++中的前向声明对于节省编译时间很有用,因为编译器不需要检查包含的标头中的翻译单元。 它还具有其他好处,例如防止名称空间污染,允许使用PImpl习惯用法 ,甚至在某些情况下甚至可以减小二进制大小。 C ++具有很酷的<iosfwd>标头,它为所有C ++流(例如std :: stringstreamstd :: fstream)声明前向声明。

如果您有一个使用标准C ++中任何流类的类,则应在类声明中使用<iosfwd>标头,并且在实现中仅包括必要的标头。 请参阅以下代码段作为示例:

通常,应该尽可能多地使用前向声明。 将<sstream>改为头文件<iosfwd>会对编译器在文件预处理中必须创建多少行产生巨大影响。 可以用一个简单的命令来测试:

猫test_class.hpp | g ++ -E -xc ++ — | | 厕所

此命令输出test_class.hpp并将其通过管道传送到g ++,然后g ++ 输出经过预处理的源代码并将其发送到 wc 的标准输出以对行进行计数。 使用<iosfwd>时,预处理的文件为1229行,而对<sstream>的直接包含则为41952。而只有在类中使用一种类型的流时,此文件才可以。 真是节省。

这是我第一部分得到的同一张图片,是本文的封面照片(不幸的是,我仍然很懒。.):

如果您喜欢这个故事,请按下面的❤按钮(您知道可以鼓掌不止一次)。 也请随时分享这个故事!

关于我

我是Heikki Hellgren,是Elektrobit Automotive的软件专家和技术爱好者。 我的兴趣是软件构建,工具,自动测试以及AI和自动驾驶等所有新奇事物。 您可以在MediumTwitter上关注我,并查看我的网站以获取更多信息。

From: https://hackernoon.com/forward-declarations-and-iosfwd-b6df7b3ed092

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值