资源大全 | 神秘文化 | 在线翻译 | QQ专区 | 视频教程 | 彩信频道 | 搜索引擎 | BT下载 |  | 网站地图
设为首页
加入收藏
联系站长
您现在的位置: 一百网络 >> 其他编程 >> C++编程 >> 文档正文
最近更新
普通文档 mutable的用法
普通文档 stringstream的用法
普通文档 explicit的用法
普通文档 VHDL语言数字钟
普通文档 自定义Firefox的配置保存
普通文档 subversion服务器的配置
普通文档 一段代码的几种写法-怎么
普通文档 如何判断一个COM对象是否
普通文档 纯技术讨论com控件创建过
普通文档 string 类的使用方法
推荐文章
推荐文档 专家教您如何在C语言中巧
推荐文档 详细解析C++编写的ATM自
推荐文档 C++编程中的四个调试小技
推荐文档 Windows下C语言网络编程
推荐文档 Visual C++常用数据类型
推荐文档 COM组件设计与应用之实现
推荐文档 利用VC实现图像的特殊显
消除C++的编译期依赖

文章作者:未知 录入时间:2007-7-10 来源:本站原创
网站声明:本站的文章除部分特别声明禁止转载的专稿外,可以自由转载.但请务必注明出处和原始作者,文章版权归本网站与文章作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。

  一个C++程序的代码量达到上万行以后,编译期依赖就变成一个很头痛的问题。这里简单的写出几个消除C++的编译期依赖的原则,当然,完全消除C++的编译期依赖,是以运行性能的损失为代价的,使用的时候要综合考虑。
  1)不要直接访问其它类的数据成员
  2)不要使用内联函数
  3)慎重使用模板
  4)显式写出编译器会自动生成的函数,比如默认构造函数,析构函数,拷贝构造函数,即使它们什么也不做。
  5)优先考虑组合,而不是继承
  6)使用以下的办法:

刚开始的实现,包括MyClass.h 和MyClass.cpp文件。

// MyClass.h

class MyClass
{
public:
    void doIt();
private:
    
int   m_value1;
    float m_value2;
};

这种代码组织方式有什么问题呢?它的问题称之为“私有数据依赖”,其它的客户类不能访问其私有数据,但MyClass如果修改了私有数据的定义,客户类必须要重新编译。对此,可以采用下列办法:

MyClass.h
// MyClass.h

class MyClass
{
public:
    MyClass();
    ~MyClass();
    void doIt();
private:
    stuct Data;
    Data 
* d;
};

MyClass.cpp
// MyClass.cpp

struct MyClass::Data
{
    
int   value1;
    float value2;
};

MyClass::MyClass()
: d(
new Data)
{
}
MyClass::~MyClass()
{
   delete d;
}
  • 上一篇文档:

  • 下一篇文档:
  •     查找更多“[图文]消除C++的编译期依赖”的内容  
    相关连接
  • mutable的用法

  • stringstream的用法

  • explicit的用法

  • VHDL语言数字钟

  • 自定义Firefox的配置保存路径