Effective C++ 总结(二)】的更多相关文章

/************************************************************************/ /* C++条款二:用编译器替换预编译器 */ /************************************************************************/   #include <iostream> using namespace std;   class GamePlayer { private: st…
条款04:确定对象使用前已先被初始化 1.由于 c part of c++而且初始化可能导致运行期成本,那么就不保证发生初始化:例如arry是c part of c++的部分从而不能保证初始化,而STL的vector则可以保证初始化 2.由于规则复杂多变,故最佳处理办法就是:永远在使用对象之前将它初始化 3.由于C++规定对象成员的初始化动作发生在进入构造函数本体之前,故在构造函数中给定成员初值不是成员变量初始化,而是赋值动作.(C++类成员变量初始化发生于这些成员变量的default构造函数被…
条款05:了解C++默默编写并调用哪些函数 编译器默认声明一个default构造函数.一个copy构造函数.一个copy assignment操作符和一个析构函数.这些函数都是public且inline. class Empty { public: Empty() {...} Empty(const Empty& rhs) {...} ~Empty() {...} Empty& operator=(const Empty& rhs) {...} }; 如果你打算在一个内含refer…
条款 2:尽量用<iostream>而不用<stdio.h> scanf 和 printf 很轻巧,很高效,你也早就知道怎么用它们,这我承 认.但尽管他们很有用,事实上 scanf 和 printf 及其系列还可以做些改进.尤其 是,他们不是类型安全的,而且没有扩展性.因为类型安全和扩展性是 C++的 基石,所以你也要服从这一点.另外,scanf/printf 系列函数把要读写的变量和 控制读写格式的信息分开来,就象古老的 FORTRAN 那样.是该向五十年代说 诀别的时候了! 如…
参考:http://www.cnblogs.com/ronny/p/3740926.html 条款05:了解C++默默编写并调用哪些函数 如果自定义一个空类的话,会自动生成默认构造函数.拷贝构造函数.拷贝赋值函数.析构函数(再次感觉原文翻译的实在是太啰嗦了!). 当成员变量里有const对象或引用类型时,编译器会不能合成默认的拷贝赋值函数:当一个基类把它的拷贝赋值函数定义为private时,它的派生类 也不能生成默认的拷贝赋值函数,因为它无法完成基类成份的赋值. 条款06:若不想使用编译器自动生…
5. 对定制的 "类型转换函数" 保持警觉 允许编译器执行隐式类型转换,害处多过好处,不要提供转换函数,除非你确定需要. class foo { foo(int a = 0, int b = 1); operator double() const; ... }: foo test(1, 2); double d = 0.5 * test; // 编译器会调用double进行隐式转换 上述类型隐式转换可能导致错误(非预期)的函数被调用.解决方法 1.类似于C++ string 一样,添加…
当需要为一个类编写 toString() 方法时,如果字符串操作比较简单,便可以信赖编译器,它会为你合理地构造最终的字符串结果(而不会不断创建冗余的中间变量). String mongo = "mongo"; String s = "abc" + "mongo" + "def" + 47; // StringBuilder.apppend("abc").append(mongo).append("…
Spring  EL 一:在Spring xml 配置文件中运用   Spring EL Spring EL 采用 #{Sp Expression  Language} 即 #{spring表达式} 1:运用EL表达式的配置文件如下: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans"…
1.定义 Constants :程序编译的时候就已经存在且在程序生命周期内不会改变的值. Variables:变量本身被用来存储特定类型的数据,可以根据需要随时改变变量中所存储的数据值.每个变量都有一个特定的类型,类型决定了变量的内存大小和布局.范围内的值可以存储在内存中,可以对变量进行一系列操作. 2.命名规范 常量命名全部大写,单词间用下划线隔开. Class ConstantsTest { : private const string USER_NAME="Marry"; pri…
<Effective C#>读书笔记(二)- .NET 资源托管 简介 续 <Effective C#>读书笔记(一)- C# 语言习惯. .NET 中,GC 会帮助我们管理内存,我们并不需要去担心内存泄漏,资源分配和指针初始化等问题.不过,它也并非万能,因为非托管资源需要我们自己进行清理,如文件句柄.数据库连接.GDI+ 对象和COM 对象等. 目录 十二.推荐使用成员初始化器而不是赋值语句 十三.正确地初始化静态成员变量 十四.尽量减少重复的初始化逻辑 十五.使用 using…