![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Effective C++
tianya_team
关注抖音号:天天coding,免费获得源码以及技术指导。
展开
-
Conclusion for Designs and Declarations
条款18:1.欲开发一个“容易被正确使用,不容易被误用”的接口,首先必须考虑客户可能做出什么样的错误。例如:class Date{public: Date(int month, int day, int year); //...};客户可能很容易犯下至少两个错误:第一,以错误的次序传递参数:Date d(30,3,1995);第二,传递一个无效的月份或天数:Date d原创 2015-12-08 10:43:48 · 235 阅读 · 0 评论 -
Conclusion for Resource Management
条款13:1.再看工厂函数我们使用一个投资行为库,其中各式各样的投资行为继承自一个root class Investment:class Investment{};进一步假设这个程序库通过工厂函数(条款7)供应我们特定的Investment对象:Investment* createInvestment(); //返回指针,指向Investment继承体系的动态分配对象。调用者有责原创 2015-12-08 19:30:50 · 254 阅读 · 0 评论 -
Conclusion for Accustoming Yourself to C++
条款01:1.C++是一个同时支持过程形式、面向对象形式、函数形式、泛型形式、元编程形式的语言。条款02:1.宁可以编译器替换预处理器#define ASPECT_RATIO 1.653记号名称ASPECT_RATIO也许从未被编译器看见,在编译器开始处理源码之前它就被移走了。于是ASPECT_RATIO可能没有记号表内。当运行此常量获得错误信息时,错误信息提到1.原创 2015-12-09 18:15:07 · 303 阅读 · 0 评论 -
exception,smart_ptr
// Workshop 9 - Smart Pointers// w9.cpp#include #include #include "Element.h"#include "List.h"const int FWC = 5;const int FWD = 12;const int FWP = 8;w9::List merge(const w9::List& desc,cons原创 2015-11-26 14:23:00 · 270 阅读 · 0 评论 -
Conclusion for Inheritance and Object Oriented Design
条款32:1.公有继承是一种is-a关系2.任何函数如果期望获得一个类型为基类(pointer-to基类或reference-to基类)的实参,都也愿意接受一个继承类对象。这点只对public继承成立。3.如果解决public继承中“不是所有的鸟都会飞”问题?4.某些可施行于矩阵身上的事情却不可以施行于正方形身上(故不可以public继承)条款33:1.内层作用域的原创 2015-12-06 13:19:11 · 589 阅读 · 0 评论 -
Conclusion for Implementations
条款26:1.尽可能避免变量被定义但是没有被使用。std::string encryptPassword(const std::string& password){ using namespace std; string encrypted; //如果抛出异常,则可能没被使用,但是付出构造和析构成本 if (password.length() < MinimumPassword原创 2015-12-07 10:39:24 · 357 阅读 · 0 评论 -
Conclusion for Constructors,Destructors,and Assignment Operators
条款05:1.编译器默认生成的函数有哪些?如果写下一个空类,经过C++处理过后,就不是一个空类了。class Empty(){};编译器生成的类如下:class Empty{public: Empty(){...} Empty(const Empty& rhs){...} ~Empty(){...} Empty& operator=(const Empty& rhs){.原创 2015-12-08 21:40:17 · 328 阅读 · 0 评论