![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Effective C++
文章平均质量分 95
Still_Believe_
爱好编程C++,Java,Python。github主页:https://github.com/klc407073648
展开
-
Effective C++读书笔记(十)——模板与泛型编程
1.了解隐式接口和编译期多态class Widget{public: Widget(); virtual ~Widget(); virtual std::size_t size() const; virtual void normalize(); void swap(Widget& other)}class doProcessing(Widget& w){ if(w.size() > 10 && w !=原创 2020-10-08 08:53:13 · 95 阅读 · 0 评论 -
Effective C++读书笔记(九)——继承与面向对象设计
1.确认你的public继承塑模出is-a关系C++面向对象编程,最重要的一个规则:public inheritance(公开继承)意味“is-a”(是一种)的关系。即能够施行于base class 对象身上的每件事情,也可以施行于derived class对象身上,因为derived class对象也都是一个base class对象。但是界限很难鉴别,举例如下:class Person{...};class Student:public Person{...};人的概念比学生更一般化,学生是原创 2020-10-07 08:48:23 · 207 阅读 · 0 评论 -
Effective C++读书笔记(八)——实现
1.为“异常安全”而努力是值得的void PrettyMenu::changeBackground(std::istream& imgSrc){ lock(&mutex); delete bgImage; ++imageChanges; bgImage = new Image(imgSrc); unlock(&mutex);}上述函数未满足异常安全的两个条件:1.不泄露任何资源;//new Image(imgSrc)抛出异常时,原创 2020-10-06 09:25:10 · 85 阅读 · 0 评论 -
Effective C++读书笔记(七)——实现
1.尽可能延后变量定义式的出现时间只要你定义了一个变量而其类型带有一个构造函数或析构函数,那么当程序控制流到达这个变量定义式时,你便得承受构造成本;当这个变量离开其作用域时,你便得承受析构成本。即使这个变量最终并未被使用,仍需耗费这些成本,所以你一个尽可能避免这种情形。V1:std::string encryptPasswd(const std::string& password){ using namespace std; string encrypted;原创 2020-10-05 19:26:01 · 143 阅读 · 0 评论 -
Effective C++读书笔记(六)——设计与声明
1.必须返回对象时,别妄想返回其referenceclass Rational{public: Rational(int numerator=0,int deominator = 1); ...private: int n,d; friend const Rational operator*(const Rational& lhs,const Rational& rhs);}函数创建新对象可以在stack空间或heap空间创建。stack.原创 2020-10-04 09:38:02 · 115 阅读 · 0 评论 -
Effective C++读书笔记(五)——设计与声明
1.让接口容易被正确使用,不易被误用class Date{public: Date(int month, int day, int year) ...};上述接口可能会引起客户调用的错误,即填写顺序出错:Date d(2, 30, 2020);Date d(30, 2, 2020);进一步,可以将month,day,year封装成struct或classclass Date{public: Date(const Month& m, con原创 2020-10-02 09:54:18 · 107 阅读 · 0 评论 -
Effective C++读书笔记(四)——资源管理
资源管理1.以对象管理资源中心思想:把资源放进对象内,便可以依赖C++的析构函数自动调用机制确保资源被释放。关键点:1.获得资源后立刻放进管理对象。(Resource Acquisition Is Initialization,RAII)2.管理对象运用析构函数确保资源被释放。注意事项:1.为防止资源泄漏,请使用RAII对象,它们在构造函数中获取资源并在析构函数中释放资源。2.两个常被使用的RAII classes分别是share_ptr和auto_ptr,前者通常是较佳选择原创 2020-09-30 08:05:02 · 118 阅读 · 0 评论 -
Effective C++读书笔记(三)——构造/析构/赋值运算
1.区分接口继承和实现继承class Shape{public: virtual void draw() const = 0; virtual void error(const std::string& msg); int objectID() const; ...};class Rectangle : public Shape {...};class Ellipse: public Shape {...};———————————————————原创 2020-09-29 08:11:40 · 110 阅读 · 0 评论 -
Effective C++读书笔记(二)——构造/析构/赋值运算
目录1.为多态基类声明virtual析构函数2.别让异常逃离析构函数3.绝不在构造和析构过程中调用virtual函数4. 令operator= 返回一个reference to *this5.在operator=中处理“自我赋值”1.为多态基类声明virtual析构函数例如工程模式,创建一个base class指针,指向生成的derived class对象。class TimeKeeper{ public: TimeKeeper(); ..原创 2020-09-28 08:16:58 · 100 阅读 · 0 评论 -
Effective C++读书笔记(一)——构造/析构/赋值运算
目录1.确认对象被使用前已先被初始化2.了解C++默默编写并调用哪些函数3.若不想使用编译器自动生成的函数,就该明确拒绝1.确认对象被使用前已先被初始化class Point{ public: Point(int x,int y); ~Point(); void printPoint(); private: int m_x,m_y;};_____________________成员初值列方式(memb.原创 2020-09-27 21:04:40 · 104 阅读 · 0 评论