Effective C++ —— 实现(五)】的更多相关文章

声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将追究法律责任!原文链接:http://www.cnblogs.com/jiangzhengjun/p/4255654.html 第五章      泛型 23.      请不要在新代码中使用原生态类型 声明中具有一个或者多个类型参数的类或者接口,就是泛型类或者泛型接口.泛型类和接口统称为泛型. 每种…
参考:http://www.cnblogs.com/ronny/p/3754755.html 条款26:尽可能延后变量定义式的出现时间 有些对象,你可能过早的定义它,而在代码执行的过程中发生了导常,造成了开始定义的对象并没有被使用,而付出了构造成本来析构成本. 所以我们应该在定义对象时,尽可能的延后,甚至直到非得使用该变量前一刻为止,应该尝试延后这份定义直到能够给它初值实参为止. 这样做的好处是:不仅可以避免构造(析构)非必要对象,还可以避免无意义的default构造行为. 遇到循环怎么办?此时…
  //申明一个类时,编译器会默认为你提供四个函数. //无参构造函数,析构函数,copy构造函数,copy assignment操作符.     template <typename T> class b { public: b(const char* name, const T& value); b(const string& name, const T& value);   private: string nameValue; //当此实例变量有const或者&a…
1,考虑使用contextlib和with语句改写可复用的try/finally代码 with lock:print('lock is held')相当于try:print('lock is held'),finally:lock.release,使用with可以避免繁琐的语句 开发者可以使用内置的contextlib模块的contextmanager修饰器来处理自己编写的对象和函数以支持with语句,这样做比标准写法更便捷,如果使用标准方式写,需要定义新类并提供__enter__和__exit…
静态类型和动态类型各有所长,静态类型能够让编译器帮你找出更多的错误,因为编译器能够在编译时进行大部分的检查工作.C# 是一种静态类型的语言,不过它加入了动态类型的语言特性,可以更高效地解决问题. 一.目录 三十八.理解动态类型的优劣 三十九.使用动态类型表达泛型类型参数的运行时类型 四十.将接受匿名类型的参数声明为 dynamic 四十一.用 DynamicObject 或 IDynamicMetaObjectProvider 实现数据驱动的动态类型 四十二.如何使用表达式 API 四十三.使用…
第五章:内存管理 29 理解引用计数 30 以ARC简化引用计数 总结:ARC通过命名约定将内存管理规则标准化.其他编程语言很少像OC这样强调命名.ARC通过设置全局数据结构(此数据结构的具体内容因处理器而异)中的一个标志位,来代替直接调用autorelease和retain.这是ARC所带来的好处.待编译器与运行期组件日臻成熟,还会出现其他的优化技术.CoreFoundation对象不归ARC管理,开发者必须适时调用CFRetain/CFRelease. 31 在dealloc方法中只释放引用…
第五章 实现 条款26:尽可能延后变量定义式的出现时间 只要定义了一个变量而其类型带有一个构造函数或析构函数,那么 当程序的控制流到达这个变量定义式时,你得承受这个构造成本. 当这个变量离开这个作用域时,你得承受这个析构成本. 即使这个变量最终并未被使用,仍然需要耗费这些成本,所以应该尽可能避免这种情形,即延后变量的定义,直到非得使用该变量的前一刻为止,甚至应该尝试延后这份定义直到能够给它初值实参为止. 如果变量只在循环内使用,那么把它定义于循环外并在每次循环迭代是赋值给它比较好,还是该把它定义…
30.用enum代替int常量 枚举类型是指由一组固定的常量组成合法值的类型.在java没有引入枚举类型前,表示枚举类型的常用方法是声明一组不同的int常量,每个类型成员一个常量,这种方法称作int枚举模式.采用int枚举模式的程序是十分脆弱的,因为int值是编译时常量,若与枚举常量关联的int发生变化,客户端就必须重新编译. java枚举类型背后的思想:通过公有的静态final域为每个枚举常量导出实例的类.因为没有可以访问的构造器,枚举类型是真正的final.客户端既不能创建枚举类型的实例,也…
第21条:用函数对象表示策略 这一条其实也没说啥,就是策略模式.碰到这种场景时,定义一个策略接口,然后不同策略子类实现它,主类包含这个接口的引用就可以了. 第22条:优先考虑静态成员类 嵌套类是指被定义在另一个类的内部的类.嵌套类存在的目的应该只是为它的外围类提供服务.嵌套类包括四种:静态成员类.非静态成员类.匿名类和局部类.除了第一种之外,其他三种都被称为内部类. 听起来很绕,其实区分还是很简单的. 首先,如果没有放在方法内部,那就是成员类(根据具体情况决定要不要做成静态的).放在方法内部,那…
1.使用Object的直接实例构造轻量级的字典 字典就是可变长的字符串与值得映射集合.JavaScript甚至提供了枚举一个对象属性名的利器——for...in循环. var dict = { alice : 34 , bob : 24 , chris : 62 } ; var people = [ ] ; for(var name in dict){ people.push(name + ":"+ dict [name]) } people ; 坚持Object的直接实例原则可以使得…