![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
笔记
lppop6
这个作者很懒,什么都没留下…
展开
-
Effective C++读书笔记(9)——杂项讨论
不要忽视编译器的警告class B{public: virtual void f() const;};class D:public B{public: virtual void f();};你是想要重新定义virtual函数,但是你少了一个const。有的编译器会显示警告D::f遮盖了B::f,但是这是在告诉你B中的f并未在D中声明。你如果忽略了警告,就会造成大量的调试时间。不同的警告信息往往跟它们看起来完全不一样,你要学会选择性忽略,但你要知道这个警告的精确意义!让自己熟悉原创 2020-05-16 00:56:54 · 162 阅读 · 0 评论 -
Effective C++读书笔记(8)——定制new和delete
本章讨论的new与delete适用与new[ ]与delete[ ]。还有STL容器使用的heap内存是容器所拥有的分配器对象管理的。不是被new和delete直接管理。了解new-handler的行为当operate new无法满足某一内存的分配需求的时候,就会抛出异常。但在抛出异常之前,他会调用一个客户指定的处理函数,new-handler,客户为了指定这个函数,就要使用set_new_handler,void outOfMan(){...}int main(){ std::set_ne原创 2020-05-16 00:24:01 · 176 阅读 · 0 评论 -
Effective C++读书笔记(7)——模板与泛型编程
泛型编程写出来的代码与其所处理的对象类型彼此独立。TMP是图灵完备的。了解隐式接口和编译期的多态面向对象是以显式接口和运行期多态解决问题//某个无意义的类与函数class Widget{public: Widget(); virtual ~Widget(); virtual std::size_t size() const; ...};//w的某些函数是virtual,显示出运行期多态//w的类型被声明为Widget,w支持Widget的接口void doProcessing(原创 2020-05-15 12:14:54 · 231 阅读 · 0 评论 -
Effective C++读书笔记(6)——继承与面向对象设计
确定你的public继承塑模出is-a关系public继承意味着is-a。适用于base classes身上的每一件事情也一定适用于derived classes身上,因为每个derived class对象也都是一个base calss对象。这章不知怎么写,感觉要自己体会吧。避免遮掩继承来的名称这个其实是跟作用域关系比较大,就是derived class内的名称会遮挡base classe...原创 2020-04-22 12:11:36 · 161 阅读 · 0 评论 -
Effective C++读书笔记(3)——资源管理
资源的概念是一旦使用了该资源,将来就必须还给系统,不然就会产生不确定的行为。C++中最常使用的资源就是动态分配内存,但还有其他的资源比如文件描述器、互斥锁、图形界面的字型和笔刷、数据库连接以及网络socket。以对象管理资源以对象管理资源的话,主要是有两种关键的想法:获得资源之后立刻放进管理对象(RAII机制)管理对象运用析构函数来确保资源被释放—在析构函数中的资源释放可能会抛出异常,需...原创 2020-04-12 00:19:51 · 128 阅读 · 0 评论 -
Effective C++ 读书笔记(5)—— 实现
尽可能延后变量定义式的出现时间当一个变量的类型带有构造函数与析构函数的时候,控制流到达这个定义式就得承担构造成本,当离开作用域就必须承担析构成本,如果最后这个变量从未使用,仍然需要这些成本(在抛出异常的时候,就可能出现未被使用的情况)。尽可能延后的真正意义是:你不单单应该延后变量的定义直到使用这个变量的那一刻,而且应该延后这份定义知道能给他初值实参。对于循环来说,要判断他的构造析构成本与赋值...原创 2020-04-19 18:30:33 · 129 阅读 · 0 评论 -
Effective C++ 读书笔记(4)——设计与声明
让接口更容易被正确使用我们设计的接口应该在没有获得预期行为的时候禁止通过编译。可以通过导入简单的外覆类型来避免:struct Day{ explicit Month(int d); :void (d){ } int val;};class Date{public: Date(const Month& m); ... };Date d(Month(3)); ...原创 2020-04-18 08:03:40 · 124 阅读 · 0 评论 -
Effective C++读书笔记(2)——构造、析构、赋值运算
C++默认调用的函数当你写一个空类的时候,编译器会默认声明一个编译器版本的copy构造函数,copy assignment操作符、一个析构函数和默认构造函数(都是inline的与public)。//当声明一个空类的时候编译器默认声明以下函数//当函数调用的时候,编译器才会创建这些函数class Empty(){public: Empty(){...}; //默认构造函数...2020-04-06 01:45:33 · 102 阅读 · 0 评论