![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
读书笔记
文章平均质量分 69
记录阅读专业书后的收获
二零二三.
这个作者很懒,什么都没留下…
展开
-
Effective C++ 笔记(九)
九:杂项讨论 条款53:不要忽视编译器的警告 请记住:严肃对待编译器发出的警告信息。努力在你的编译器的最高警告级别下争取“无任何警告”的荣誉。 不要过度依赖编译器的报警能力,因为不同的编译器对待事情的态度并不相同。一旦移植到另一个编译器上,你原本依赖的警告信息有可能消失。 条款54:让自己熟悉包括TR1在内的标准程序库 请记住:1.C++标准程序的主要机能是由STL、iostreams、locales组成,并包含C99标准程序库; 2.TR1添加了诸如智能指针、一般化函数指针、哈希容器、正则表达式及其他10原创 2021-11-04 17:35:40 · 377 阅读 · 0 评论 -
Effective C++ 笔记(八)
八:定制new和delete(待完善) 条款49:了解new-handler的行为 请记住:1.set_new_handler允许客户指定一个函数,在内存分配无法获得满足时被调用。 2.Nothrow new是一个颇为局限的工具,因为他只适用于内存分配;后继的构造函数调用还是可能抛出异常。 条款50:了解new和delete的合理替换时机 请记住:有许多理由需要写个自定的new和delete,包括改善效能、对heap运用错误进行调试、收集heap使用信息。 条款51:编写new和delete时需固守常规 请原创 2021-11-04 17:22:52 · 78 阅读 · 0 评论 -
Effective C++ 笔记 (七)
七:模板与泛型编程 条款41:了解隐式接口和编译期多态 面向对象编程总是以显式接口和运行期多态解决问题。Templates及泛型编程与面向对象有根本上的不同,显式接口和运行期多态仍然存在,但重要性降低。反倒是隐式接口和编译期多态更重要。 什么是显式接口,运行期多态,隐式接口,编译期多态?看下面这个例子 class Widget{ public: Widget(); virtual ~Widget(); virtual std::size_t size() const; vir原创 2021-11-04 17:10:37 · 531 阅读 · 0 评论 -
Effective C++ 笔记(六)
六:继承与面向对象设计 条款32:确定你的public继承塑模出is-a关系 如果你令class B(派生类)以public形式继承class A(父类),你便是告诉C++编译器说,每一个类型为D的对象同时也是一个类型为B的对象。 请记住:“public继承”意味is-a。适用于base classes身上的每一件事情一定也适用于derived class身上,因为每一个derived class 对象也都是一个base class 对象。 条款33:避免遮掩继承而来的名称 class Base{ priv原创 2021-11-03 17:04:46 · 206 阅读 · 0 评论 -
Effective C++ 笔记(五)
五:实现 条款26:尽可能延后变量定义式的出现时间 "尽可能延后"的真正意义:不只应该延后变量的定义,直到非得使用该变量的前一刻为止,甚至应该尝试延后这份定义直到能够给它初值实参为止。如果这样,不仅能够避免构造(和析构)非必要对象,还可以避免无意义的default构造函数。更深一层说,以“具明显意义之初值”将变量初始化,还可以附带说明变量的目的。 //伪代码,说明“能够避免构造(和析构)非必要对象“ void A(){ string str; if(....){ throw(...); } ..原创 2021-10-30 16:38:15 · 100 阅读 · 0 评论 -
Effective C++ 笔记(四)
四:设计与声明 条款18:让接口容易被正确使用,不易被误用 请记住:1.好的接口很容易被正确使用,不容易被误用。你应该在你的所有接口中努力达到这些性质。 2.“促进正确使用”的办法包括接口的一致性,以及与内置类型的行为兼容。 3.“阻止误用”的办法包括建立新类型、限制类型上的操作,束缚对象值,以及消除客户的资源管理责任。 4.tr1::shared_ptr支持定制型删除器。这可防范DLL问题,可被用来自动解除互斥锁等等。 条款19:设计class犹如设计type 请记住:Class的设计就是type的设计。原创 2021-10-20 23:36:30 · 80 阅读 · 0 评论 -
Effective C++ 笔记(三)
三:资源管理 条款13:以对象管理资源 以对象管理资源的两个关键想法: ①获得资源后立刻放进管理对象内。 ②管理对象运用析构函数确保资源被释放 把资源放进对象内,我们便可以依赖C++的“析构函数自动调用机制”确保资源被释放。如auto_ptr和shared_ptr智能指针。 auto_ptr,复制动作会使它(被复制物)指向null。 为防止资源泄露,请使用 RAII(Resource Acquisition Is Initialization)“资源取得时机便是初始化时机”。 //错误版本!!! void原创 2021-10-20 11:46:33 · 68 阅读 · 0 评论 -
Effective C++笔记(二)
二:构造/析构/赋值运算 条款05:了解C++默默编写并调用哪些函数 编译器产出的析构函数是个non-virtual,除非这个class的base class自身声明有virtual析构函数 请记住:编译器可以暗自为class创建default构造函数、copy构造函数、copy assignment操作符,以及析构函数。 条款06:若不想使用编译器自动生成的函数,就该明确拒绝 //方法一:将copy构造函数、copy assignment操作符声明为private并且不定义。 class HomeForS原创 2021-10-19 21:13:57 · 115 阅读 · 0 评论 -
Effective C++ 笔记(一)
2021/10/9 -----10/19,十天看完Effective C++,记录一下收获,方便以后复习。 一:让自己习惯C++ 条款01:视C++为一个语言联邦 将C++视为一个由相关语言组成的联邦而非单一语言,共四个次语言 ①C:C++仍是以为基础 ②Object-Oriented C++:这一部分是面向对象设计之古典守则在C++上的最直接实施。如构造,析构函数,封装,继承,多态,virtual函数(动态绑定)等等。 ③Template C++:C++的泛型编程部分。 ④STL:标准模板库。 请记住:C原创 2021-10-19 17:15:20 · 108 阅读 · 0 评论