Guru of the Week 条款07:编译期的依赖性

 

GotW #07 Compile-Time Dependencies

著者:Herb Sutter     

翻译:kingofark

[声明]:本文内容取自www.gotw.ca网站上的Guru of the Week栏目,其著作权归原著者本人所有。译者kingofark在未经原著者本人同意的情况下翻译本文。本翻译内容仅供自学和参考用,请所有阅读过本文的人不要擅自转载、传播本翻译内容;下载本翻译内容的人请在阅读浏览后,立即删除其备份。译者kingofark对违反上述两条原则的人不负任何责任。特此声明。

Revision 1.0

Guru of the Week 条款07:编译期的依赖性

 

难度:7 / 10

 

(大多数程序员使用#include包含的头文件都比实际需要的多。你也是这样的吗?想知道的话,请看本条款。)

 

 

[问题]

 

[注意:这个问题比想象的还要难!下面程序中的注释都是非常有用的。]

 

大多数程序员使用#include包含的头文件都比实际需要的要多。这会严重的影响并延长程序的建立时间(build time),特别是当一个被频繁使用的头文件中包含了太多其它的头文件的时候,问题越发严重。

 

首先,在下面的头文件当中,有哪些#include语句可以在不对程序产生副作用的情况下被直接去掉?其次,还有哪些#include语句可以在对程序进行适当的修改之后被去掉?程序将如何修改?(你不能改变X类和Y类的公共接口;也就是说,你对这个头文件所作的任何修改都不能影响调用它的代码)。

 

    // gotw007.h (implementation file is gotw007.cpp)
  
  
    //
  
  
    #include "a.h"  // class A
  
  
    #include "b.h"  // class B
  
  
    #include "c.h"  // class C
  
  
    #include "d.h"  // class D
  
  
                // (注意: 只有AC有虚拟函数(virtual functions)
  
  
    #include <iostream>
  
  
    #include <ostream>
  
  
    #include <sstream>
  
  
    #include <list>
  
  
    #include <string>
  
  
 
  
  
    class X : public A {
  
  
    public:
  
  
             X        ( const C& );
  
  
        D    Function1( int, char* );
  
  
        D    Function1( int, C );
  
  
        B&   Function2( B );
  
  
        void Function3( std::wostringstream& );
  
  
        std::ostream& print( std::ostream& ) const;
  
  
    private:
  
  
        std::string  name_;
  
  
        std::list<C> clist_;
  
  
        D            d_;
  
  
    };
  
  
    std::ostream& operator<<( std::ostream& os, const X& x )
  
  
        { return x.print(os); }
  
  
 
  
  
    class Y : private B {
  
  
    public:
  
  
        C  Function4( A );
  
  
    private:
  
  
        std::list<std::wostringstream*> alist_;
  
  
    };
  
  

 

 

[解答]

 

阅读终点,创作起航,您可以撰写心得或摘录文章要点写篇博文。去创作
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: Blender是一款免费且开源的3D建模软件,可以在官网下载。 这里是一些Blender教程链接: - Blender官网教程:https://www.blender.org/tutorials/ - Blender中文网教程:https://www.blendercn.org/tutorials/ - B站Blender教程:https://www.bilibili.com/video/BV1kE41127xr/ - YouTube上的Blender教程:https://www.youtube.com/results?search_query=blender+tutorial 希望这些链接能帮到你。 ### 回答2: 当然可以!以下是一些常用的Blender教程链接: 1. 官方Blender教程:官方网站提供了一系列的教程资源,从基础模型创建到高级渲染和动画技巧等各个方面都有涉及。你可以在https://www.blender.org/support/tutorials/ 上找到官方教程。 2. Blender Guru:这是一个非常受欢迎的Blender教程网站,提供了大量的免费和付费教程。你可以在https://www.blenderguru.com/ 上浏览他们的教程。 3. CG Cookie:这个网站也提供了大量的Blender教程,从入门到专业技巧都有。你可以在https://cgcookie.com/ 上找到他们的教程。 4. YouTube教程:在YouTube上有很多优秀的Blender教程频道,比如Blender Guru、CG Cookie和BlenderBrit等。你可以在YouTube上搜索这些频道,并按照你感兴趣的主题找到他们的视频教程。 希望以上链接能够帮助你开始学习Blender,并提高你的技能!祝你学习愉快! ### 回答3: 当然可以!以下是一些Blender教程的链接,你可以根据自己的需求选择合适的教程学习: 1. Blender官方网站教程(英文):https://www.blender.org/support/tutorials/ 这是Blender官方提供的教程,包括入门教程、建模、动画、渲染等方面的内容。 2. B站Blender教程(中文):https://search.bilibili.com/all?keyword=Blender Bilibili是一个流行的视频分享网站,上面有很多Blender相关的教学视频,你可以根据关键词搜索自己感兴趣的教程。 3. Blender Guru(英文):https://www.blenderguru.com/ Blender Guru是一位知名的Blender教程作者,他的网站上有很多高质量的Blender教程,特别适合想要提升技能的人学习。 4. Blender 3D 切片(中文):https://www.sliceny.com/course/22 这是一家国内Blender培训机构的教程网站,里面有一系列从入门到进阶的Blender教程,适合初学者和进阶者学习。 这些链接可以帮助你开始学习Blender,并提供不同水平和兴趣的教程内容。祝你学习愉快,成为一名Blender专家!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kingofark

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值