条款53:不要轻忽编译器的警告 努力在编译器最高警告级别下争取“无任何警告”。 不要过度依赖编译器的报警能力,不同的编译器对待同一件事情的态度不...
条款49:了解new-handler的行为 当operator new或者operator new[]分配内存时,如果不能获得指定大小的内存时,...
背景: 实际项目中,我们往往将一个系统分解成一个个功能模块,这些功能模块以动态库加载的方式由主程序加载使用。 需求1: 主程序定义好功能类的接口...
条款41:了解隐式接口和编译器多态 对于class而言,接口是显式的,动态通过virtual函数实现,发生于运行期间。 对于template而言...
条款32:确定public继承塑模出is-a关系 is-a和has-a是C++类的两个重要关系描述,如果类D基于public方式继承于类B,则D...
背景:我们在程序中往往需要对一个类实例的合法性进行检查,大部分的程序员都会想到在类的方法中提供一个方法检查合法性(比如提供一个IsValid函数...
条款26:尽可能延后变量定义式的出现时间 考察下面的示例代码: 很显然,这里的myStr提前定义了,并且会带来额外的默认构造函数的开销,虽然在这...
条款18:让接口容易被正确使用,不易被误用 建立新的类型作为函数可以防止用户输入错误的数据,考察下面的类构造函数: 当用户调用构造函数时,很容易...
C++程序开发中我们常用std::sort函数对一个vector数组进行排序,但是某些情况下会产生crash的情况,比如下面的代码: 究其原因是...