`
kmplayer
  • 浏览: 512675 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

条款46:宁愿编译和连接时出错,也不要执行时出错.

 
阅读更多
1,先看一个例子:
class Month {
public:
  static const Month Jan() { return 1; }
  static const Month Feb() { return 2; }
  ...
  static const Month Dec() { return 12; }
  int asInt() const           // for convenience, make
  { return monthNumber; }     // it possible to convert
                              // a Month to an int
private:
  Month(int number): monthNumber(number) {}
  Month(const Month& rhs);
  const int monthNumber;
};
class Date {
public:
  Date(int day, const Month& month, int year);
  ...
};

设计理念:
第一:Month构造函数私有,可以阻止clients产生新的月份.
第二:每个Month object都是const,所以它们不可能被修改.
第三:获得Month object的唯一途径调用函数,不用担心Month object没有被初始化.

这个例子以"编译期检验"取代了"执行期检验".

2,消除所有的执行时期检验是不切实际的,尽管如此,将执行时期的检验移到编译期或连接期,还是一个值得的目标.
分享到:
评论

相关推荐

    DELPHI7编译出错提示内存:RLINK32.dll出错

    delphi7编译慢 或linking阶段会出错 经常会出现内存泄漏或不足 或RLink32.DLL访问出错 直接把bolndmm.dll与rlink32.dll拷贝至delphi7下的bin目录中可以调试了 按网友的说法 新版的内存管理器或连接器 bolndmm.dll...

    编译OpenCV 缺少boostdesc_bgm.i文件出错的解决

    编译OpenCV以及openc_contrib提示缺少boostdesc_bgm.i文件出错的解决 总共以下几个文件,都需要拷贝: path: /home/ming/opencv-4.1.0/.cache/xfeatures2d/boostdesc boostdesc_bgm.i boostdesc_bgm_bi.i ...

    编译回DLL时出错

    编译回DLL时出错

    delphi7编译慢 Rlink32.DLL 出错

    在dephi比软高级的版本里写的程序,拿到dephi7下面编译,总是会出错,直接把delphi2006下的bolndmm.dll与rlink32.dll拷贝至delphi7下的bin目录中 直接把delphi2010下的bolndmm.dll与rlink32.dll拷贝至delphi7下的bin...

    完美解决VS2003.Net fatal error LNK1201: 写入程序数据库“.pdb”时出错--freepdb.cmd handle.exe

    完美解决VS2003.Net fatal error LNK1201: 写入程序数据库“.pdb”时出错 文末给出一个完美的解决方案和一个懒人补丁包。问题描述如下:在重新编译的时候,经常报错: fatal error LNK1201: 写入程序数据库“.pdb”...

    反编译classes.dex工具

    1. **反编译.bat**:这是一个批处理文件,它可能包含执行反编译过程的命令。使用批处理文件可以方便地自动化这个过程,只需点击一下即可运行所需的命令。 2. **编译.bat**:与反编译相反,这个文件可能是用于重新...

    Linux下ppp2.4.7源码及编译步骤.rar

    此外,ppp还可以与其他工具结合使用,如`chat`进行拨号交互,`ip-up`和`ip-down`脚本来执行连接建立和断开时的网络配置更改。 总结,这个压缩包提供了一个在Linux下编译和使用ppp2.4.7的完整流程。对于熟悉源代码...

    为什么debug编译不出错,而release编译会出错

    Debug 和 Release 编译模式之间的差异 Debug 和 Release 编译模式是两种不同的编译模式,分别用于不同的开发阶段。在 Debug 模式下,编译器会插入调试信息,以便于开发者调试程序;而在 Release 模式下,编译器会...

    反编译完全版EX4-MQL 4.0.509.5,可反编译加密程序

    未经原作者许可,反编译并使用他人的EA可能违反软件开发者的权利,因此在进行此类操作时,确保遵循合法和道德的规范至关重要。 总之,"反编译完全版EX4-MQL 4.0.509.5"是一款针对MT4平台的高级工具,它允许交易者...

    C#解决“创建窗口句柄时出错”异常

    标题中的"C#解决‘创建窗口句柄时出错’异常"指的是在使用C#编程时遇到的一个常见问题,即在创建窗口或者控件时遇到了错误,导致无法成功创建窗口句柄(HWND)。这个问题通常与Windows API的交互有关,因为创建窗口...

    SVN 出错误清理工具 sqlite3.exe

    当svn 出现clean up 死循环时,或者无法提交提示错误时。 1.把sqlite3.exe放到.svn文件夹下 2.在.svn目录下打开命令行输入以下语句: sqlite3 wc.db "delete from work_queue" sqlite3 wc.db "delete from wc_lock" ...

    masm5 汇编编译和连接工具

    汇编语言是一种低级编程语言,它与机器语言密切相关,每条指令都对应于计算机硬件能够直接理解和执行的机器码。这种语言虽然复杂,但具有高度的效率和精确性,对于底层系统编程、设备驱动编写以及对性能有极高要求的...

    编译DCNv2网络:error: command 'C:\\Program Files\\NVIDIAGPUComputingToolkit\\CUDA\\v1

    在构建和运行深度学习模型时,经常会遇到编译自定义层或库的问题,例如DCNv2(Dynamic Convolutional Network version 2)。这个错误信息提示我们遇到了与CUDA相关的编译问题,具体是命令行工具`nvcc.exe`无法执行。...

    EXE反编译工具VB版.rarEXE反编译工具VB版.rarEXE反编译工具VB版.rar

    综上所述,VB版EXE反编译工具是一个专为处理VB编译的可执行文件设计的软件,用于反编译和分析代码。压缩包中的文件提供了工具的使用帮助、会员服务信息以及可能的安全指南。对于那些想要研究VB程序的内部结构、优化...

    python反编译工具pycdc.exe,python反汇编工具pycds.exe

    在执行Python程序时,解释器会将这些源代码编译成字节码,存储在.pyc文件中,以提高程序的加载速度。然而,有时我们可能需要从.pyc文件恢复原始的.py源代码,这时就需要用到Python的反编译工具。本文将详细讲解...

    编译Adb源码(VS2010)

    标签中的“DDK”通常用于驱动程序开发,但在这个场景下,由于我们不安装DDK也能完成编译,这可能意味着VS2010自带的工具集和SDK已经包含了编译ADB所需的基本组件。 压缩包中的其他文件如`adb_vs.suo`是Visual ...

    espressif.zip

    这是Arduino IDE中的核心库,包含了编译和上传代码到ESP32所需的硬件描述和驱动程序。BSP使得用户可以使用Arduino语法和库来控制ESP32的各种功能。 2. **Drivers** 为了使计算机能够识别并通信ESP32开发板,可能...

    易语言易语言反编译 (可执行源码,不是源码,大家不要下错了^_^)

    易语言是中国本土开发的一种编程语言,它...总的来说,易语言反编译工具是易语言开发者和逆向工程师的一个有力辅助工具,它能帮助我们深入了解程序的运行机制,但同时也需要我们在使用过程中遵循相应的法规和道德规范。

    cap_ffmpeg_impl.hpp

    make #遇到下面错误: make[2]: *** [modules/highgui/CMakeFiles/opencv_highgui.dir/src/cap_ffmpeg...重新执行cmake 、 make步骤,此时成功编译不再出错。然后执行sudo make install命令安装。安装过程没有出问题。

Global site tag (gtag.js) - Google Analytics