effective C++
文章平均质量分 63
hello_bravo_
这个作者很懒,什么都没留下…
展开
-
如何写出高效C++(实现)
26.尽可能延后变量定义式的出现时间你不止应该延后变量的定义,直到非得使用该变量的前一刻为止,甚至应该尝试延后这份定义直到能够给它初值实参位置,好处是不仅能够避免构造(和析构)非必要对象,还可以避免无意义的default构造行为。对于循环而言有如下两个计划A:定义变量于循环外,则一个构造函数一个析构函数和n个赋值操作B:定义变量于循环内,则n个构造函数和n个析构函数除非你知道原创 2016-08-15 17:11:49 · 1453 阅读 · 0 评论 -
如何写出高效C++(继承与面向对象设计)
32.确定你的public继承塑模出is-a关系public继承主张,能够施行于base class对象身上的每件事情,也可以施行于derived class身上。33.避免遮掩继承而来的名称编译器必须实践的名称查找规则:void Derived::mf4(){ ... mf2();...}当编译器看到这里使用名称mf2,必须估算它指涉的是什么东西。原创 2016-08-16 17:01:43 · 601 阅读 · 0 评论 -
如何写出高效C++(模板与泛型编程)
对Effective C++读了以后的总结(暑假没事干。。就是看书,从后往前的总结)41。了解隐式接口和编译器多态隐式接口:由一组有效表达式构成,表达式要求了相应的约束条件。显式接口:则是在源代码中明确可见的指出接口的约束条件(比如函数参数的类型)。所谓的编译期多态指的是:以不同的templete参数具现化function templates会导致调用不同的函数,这就是所谓原创 2016-08-08 17:14:52 · 1426 阅读 · 0 评论 -
如何写出高效C++(定制new和delete和杂项讨论)
49.了解new-handle的行为set_new_handler允许客户制定一个函数,在内存分配无法获得满足时被调用。void outOfMem(){ std::cerr std::abort();}int main(){ std::set_new_handler(outOfMem); int* pBigDataArray = new int[10原创 2016-08-20 10:05:39 · 613 阅读 · 0 评论 -
如何写出高效C++(让自己习惯C++)
1.视C++为一个语言联邦可以将C++视为四个次语言的联邦:(1)C语言(2)Object-Oriented C++(3)Template C++(4)STL例如对内置类型,pass-by-value比pass-by-reference有效,然而对于自定义类型,pass-by-reference-to-const往往更好。2.尽量以const,enum,inli原创 2016-08-09 10:38:44 · 810 阅读 · 0 评论 -
如何写出高效C++(构造/析构/赋值运算)
5.了解C++默默编写并调用那些函数编译器可以暗自为class创建default构造函数(前提是程序员自己不编写任何的构造函数),copy构造函数,copy assignment操作符,以及析构函数。6.若不想使用编译器自动生成的函数,就该明确拒绝如果你想要拒绝一些编译器默认为你生成的函数功能,那么最好的方案就是自己声明他们,但是不给他们定义,然后将他们的权限设置为privat原创 2016-08-11 11:02:23 · 419 阅读 · 0 评论 -
如何写出高效C++(资源管理)
资源定义:所谓资源,就是一旦用了它,将来必须换给系统。常见资源:内存,文件描述器,互斥锁,图形界面中的字型和笔刷,数据库连接以及网络sockets。13.以对象管理资源为了防止内存泄漏(1)可以使用RAII(资源获取就是初始化)对象,它们在构造函数中获得资源并在析构函数中释放资源。 (2)两个常被用的RAII class原创 2016-08-12 10:28:09 · 552 阅读 · 0 评论 -
如何写出高效C++(设计与声明)
18.让接口容易被正确使用不易被误用(1)许多客户端错误可以因为导入新类型而获得预防(explicit的作用是防止隐式转换)例如Date(int month,int day,int year);乍看正确,其实不然解决方案是构造如下三类struct Daystruct Monthstruct Year(2)预防客户错误的另一个方法是,限制类型内什么事可做,什么事不原创 2016-08-13 11:19:22 · 492 阅读 · 0 评论