Effective C++
平淡的像一只猫
无无无
展开
-
Effective C++ 第一章——让自己习惯C++
Effective C++ 条款1——让自己习惯C++条款1——视C++为一个语言联邦C++不再是以前的C with class,而加入了很多新的特性,如Exception(异常)、template(模板)、STL。C++目前包含多重范型编程语言,支持过程形式(procedural)、面向对象形式(object-oriented)、函数形式(functional)、泛型形式(generic)、...原创 2019-02-01 15:55:16 · 185 阅读 · 0 评论 -
Effective C++ 第二章——构造、析构、赋值运算
Effective C++ 第二章——构造、析构、赋值运算条款5——了解C++默默编写并调用了哪些函数1.编译器默认提供的函数编译器为一个空类声明一个copy构造函数、一个copy assignment 操作符以及一个析构函数,若没有用户声明的构造函数,则编译器会帮忙声明一个default构造函数,这些函数均是public且inline。class Empty {};//等价于如下代码...原创 2019-02-03 14:27:35 · 190 阅读 · 0 评论 -
Effective C++ 第三章——资源管理
Effective C++ 第三章——资源管理条款13——以对象管理资源 当动态内存分配以后,需要自己调用delete释放资源,这是很不安全的,可能由于函数过早的return或者异常的抛出,这是都可能导致没有执行delete语句。我们应该依靠C++的“析构函数的自动调用机制”确保内存的释放。 C++标准库提供智能指针以避免资源泄露,auto_ptr(被unique_ptr...原创 2019-02-03 17:49:46 · 176 阅读 · 0 评论 -
Effective C++ 第四章——设计与声明
Effective C++ 第四章——设计与声明条款18——让接口容易被正确使用,不易被误用假设我们需要设计一个用于表现日期的class设计构造函数:class Date{public: Date(int month,int day,int year);...};这种设计会导致至少两个错误,客户以错误的次序传参和传递一个错误的月份或者天数。设计者需要避免错误的次序传参可以采用建...原创 2019-02-05 15:11:23 · 160 阅读 · 0 评论 -
Effective C++ 第五章——实现
Effective C++ 第五章——实现条款26——尽可能延后变量定义式的出现时间 只要你定义了一个变量而其类型带有一个构造函数和析构函数时,那么当程序的控制流(control flow)到达这个变量定义时,你变得承受构造成本;当这边变量离开作用域时,就得承受析构成本;即使这个变量最终没有被使用,也需要耗费这些成本。例如:std::string encryptPassword(...原创 2019-02-08 11:42:52 · 130 阅读 · 0 评论 -
Effective C++ 第六章—— 继承与面向对象设计
Effective C++ 第六章—— 继承与面向对象设计c++的OOP的特点:继承可以是单一继承或多重继承;每一个继承的链接可能是public、protected或private,也可是是virtual或non-virtual;成员函数可以是virtual或non-virtual的。条款32——确定你的public继承塑模是is-a关系 公有继承(public inheritan...原创 2019-02-09 14:25:52 · 173 阅读 · 0 评论 -
Effective C++ 第七章—— 模板与泛型编程
Effective C++ 第七章—— 模板与泛型编程条款41——了解隐式接口和编译器多态 隐式接口(implicit interface):对于template而言所必须有效编译的一组表达式,就是类型T必须支持的一组隐式接口; 编译器多态(compile-time polymorphism):以不同的template参数具现化的function templates ...原创 2019-02-11 16:58:28 · 243 阅读 · 0 评论 -
Effective C++ 第九章 —— 杂项讨论
Effective C++ 第九章 —— 杂项讨论条款53——不要轻忽编译器的警告请记住:严肃对待编译器发出的警告信息。努力在你的编译器的最高(最严苛)警告级别下争取无任何警告。不要过度依赖编译器的报警能力,因为不同的编译器对待事情的态度并不相同,一旦移植到另一个编译器上,你原本依赖的警告信息可能消失。 条款54——让自己熟悉包括TR1在内的标准程序库请记住:C+...原创 2019-02-11 18:28:49 · 207 阅读 · 1 评论 -
Effective C++第八章——定制new 和 delete
Effective C++第八章——定制new 和 delete条款49——了解new-handler行为 当operator new抛出异常以反映一个未获得满足的内存需求之前,它会先调用一个客户指定的错误处理函数,叫new_handler;为了指定这个“用以处理内存不足”的函数,客户必须调用set_new_handler,该函数是一个声明于中的标准程序库函数。namespace...原创 2019-02-12 15:05:39 · 159 阅读 · 0 评论