effective C++
文章平均质量分 82
TT_love9527
聪与敏,可恃而不可恃也,自恃其聪与敏而不学者,自败者也;
昏也庸,可限而不可限也,不自限其昏与庸而力学不倦者,自力者也。
展开
-
Effective C++ 条款1、2、3、4
以下内容均来自Scott Meyers大师所著Effective C++ version3,如有错误地方,欢迎指正!相互学习,促进!!条款1 视C++为一个语言联邦理解C++,须认识其主要的次语言:1、C。C++是以C为基础。区块、语句、预处理器、内置数据类型(build-in data types)、数组、指针等都来自C嘛!以C++内的C成分工作时,高效编程守则昭出C语言的局限:没有...原创 2018-05-20 13:23:16 · 466 阅读 · 0 评论 -
Effective C++ 条款22、23
条款22 将成员变量声明为private此条款解决的问题,为什么成员变量不该是public,然后所有反对public成员变量的论点同样适用于protected成员变量。于是成员变应该是private。理由一:语法一致性,public全为成员函数,private全为成员变量(看起来就舒服,调用起来(统一都要加个函数调用符)肯定也舒服,哈哈!)理由二:以函数取得或设定其值,即可实现“不准访问”、“只读...原创 2018-05-31 15:10:48 · 480 阅读 · 0 评论 -
Effective C++ 条款34、35
条款34 区分接口继承和实现继承函数接口继承(类比声明)和函数实现继承(类比定义)。先见如下代码举例,class Shape {public: virtual void draw() const = 0;//纯虚函数作为函数接口被继承 virtual void error(const string& msg);//impure virtual,上让derived cla...原创 2018-06-19 15:33:11 · 364 阅读 · 0 评论 -
Effective C++ 条款36、37
条款36条款37以上内容均来自Scott Meyers大师所著Effective C++ version3,如有错误地方,欢迎指正!相互学习,促进!!原创 2018-06-26 11:21:13 · 258 阅读 · 0 评论 -
Effective C++ 条款43、44
条款43 学习处理模板化基类内的名称条款44 将与参数无关的代码抽离以上内容均来自Scott Meyers大师所著Effective C++ version3,如有错误地方,欢迎指正!相互学习,促进!!...原创 2018-07-05 13:18:54 · 717 阅读 · 0 评论 -
Effective C++ 条款45、46
条款45 运用成员函数模板接受甩有兼容类型条款46 需要类型转换时请为模板定义非成员函数此条款类比条款24(将所有参数需隐式类型转换的函数定义为non-member函数)学习。以上内容均来自Scott Meyers大师所著Effective C++ version3,如有错误地方,欢迎指正!相互学习,促进!!...原创 2018-07-09 20:56:22 · 253 阅读 · 0 评论 -
Effective C++ 条款40
条款40 明智而审慎地使用多重继承多重继承的意思是继承一个以上的base classes,但这些base classes并不常在继承体系中又有更高级的base classes。举例如下,class File{};class InputFile:public File{};class OutFile:public File{};class IOFile:public InputFile, p...原创 2018-06-27 21:14:29 · 285 阅读 · 0 评论 -
Effective C++ 条款41、42
条款41条款42以上内容均来自Scott Meyers大师所著Effective C++ version3,如有错误地方,欢迎指正!相互学习,促进!!原创 2018-07-02 12:33:44 · 364 阅读 · 0 评论 -
Effective C++ 条款47、48
条款47 请使用traits clases表现类型信息5种STL迭代器分类:i、input迭代器:只能向前移动,一次一步,客户只可读取(不能涂写)它们所指的东西,而且只能读取一次。代表有istream_iterator;ii、output迭代器:只向前移动,一次一步,客户只可涂写它们所指的东西,而且只能涂写一次。代表有ostream_iterator;iii、forward迭代器:兼容上述两种迭代...原创 2018-06-28 20:13:51 · 238 阅读 · 0 评论 -
Effective C++ 条款49、50
条款49 了解new-handler的行为1、当operator new抛出异常以反映一个未获满足的内存需求之前邮寄费会先调用一个客户指定的错误处理函数,一个所谓的new-handler。为了指定这个“用以处理内存足”的函数,客户必须调用set_new_handler。关于<new>的一个标准程序库函数:namespace std { typedef void(*new_handle...原创 2018-07-15 23:10:13 · 291 阅读 · 0 评论 -
Effective C++ 条款20、21
条款20 宁以pass-by-reference-to-const替换pass-by-value条款21 必须返回对象时,别妄想返回其reference以上内容均来自Scott Meyers大师所著Effective C++ version3,如有错误地方,欢迎指正!相互学习,促进!!...原创 2018-05-31 11:54:00 · 280 阅读 · 0 评论 -
Effective C++ 条款18、19
条款18 让接口容易被正确使用,不易被误用i、从客户角度出发考虑可能发生什么样的错误一个用来表现日期的class设计构造函数:class Date {public: Date(int month, int day, int year);};Date d(30, 3, 1995);//完蛋,月份没有30的哈一旦正确的类型就定位,限制其值有时候是通情达理的,以下比较安全的解法是预先定义所有有效...原创 2018-05-29 20:03:52 · 232 阅读 · 0 评论 -
Effective C++ 条款32、33
条款32 确定你的public继承塑模出is-a关系不用怀疑,public inheritance(公开继承)意味“is-a”(是一种)的关系。也就是说,如果令class D('Derived') 以public形式继承class B('Base'),即每一个类型为D的对象同时也是一个类型为B的对象。反之不成立。所以在进行面向对象类设计时,需要明确继承之前是否是"is-a"关系,以决定de...原创 2018-06-15 15:48:26 · 257 阅读 · 0 评论 -
Effective C++ 条款5、6、7
以下内容均来自Scott Meyers大师所著Effective C++ version3,如有错误地方,欢迎指正!相互学习,促进!!原创 2018-05-21 20:19:09 · 242 阅读 · 0 评论 -
Effective C++ 条款8、9、10
此条款举一实例,代码如下class Widget {public: Widget& operator=(const Widget& rhs) {//返回类型是引用,因为返回对象作为左值,需要是引用返回类型才能被修改 ... return *this; //返回左侧对象 }};以上内容均来自Scott Meyers大师所著Ef...原创 2018-05-23 09:11:28 · 278 阅读 · 0 评论 -
Effective C++ 条款11、12
条款11 在operator=中处理“自我赋值”"自我赋值"发生在对象赋值给自已时(这种情况是时常发生,所以并不可笑,很正常)class Bitmap{...};class Widget{public: Widget& operator=(const Widget& rhs);private: Bitmap* pb;};Widget w;w = w;//...原创 2018-05-24 09:26:22 · 297 阅读 · 0 评论 -
Effective C++ 条款15、16、17
条款条款以上内容均来自Scott Meyers大师所著Effective C++ version3,如有错误地方,欢迎指正!相互学习,促进!!原创 2018-05-29 19:25:52 · 312 阅读 · 0 评论 -
Effective C++ 条款24、25
条款24 若所有参数皆需类型转换,请为此采用non-member函数如果需要为某个函数的所有参数(包括被this指针所指的那个隐喻参数)进行类型转换,那么这个函数必须是个non-member函数。如下代码举例:class Rational {public: Rational(int numeator = 0, int denominator = 1);//构造函数刻意不为expl...原创 2018-06-04 09:49:54 · 403 阅读 · 0 评论 -
Effective C++ 条款26、27
条款26 尽可能延后变量定义式的出现时间尽可能延后变量定义式出现时间,在定义的同时完成copy构造函数。string encryptPassword(const string& password) { using namespace std; if (password.length() < MinimumPasswordLength) { throw logic_error(...原创 2018-06-04 11:11:33 · 630 阅读 · 0 评论 -
Effective C++ 条款28、29
条款28 避免返回handles指向对象内部成分条款29 为“异常安全”而努力是值得的以上内容均来自Scott Meyers大师所著Effective C++ version3,如有错误地方,欢迎指正!相互学习,促进!!...原创 2018-06-11 19:58:08 · 546 阅读 · 0 评论 -
Effective C++ 条款38、39
条款34 区分接口继承和实现继承public继承中,由函数接口(类比于函数声明)继承与函数实现(类比于函数定义)继承。i、成员函数的接口总是会被继承class Shape {public: virtual void draw() const = 0;//draw是一个纯虚函数,此函数只起到接口的作用,表明此类是一个抽像基类 virtual voi error(const string&...原创 2018-06-26 13:27:32 · 673 阅读 · 0 评论 -
Effective C++ 条款 13、14
条款11 在operator=中处理“自我赋值”"自我赋值"发生在对象赋值给自已时(这种情况是时常发生,所以并不可笑,很正常)class Bitmap{...};class Widget{public: Widget& operator=(const Widget& rhs);private: Bitmap* pb;};Widget w;w = w;//又如a[...原创 2018-05-26 13:14:18 · 244 阅读 · 0 评论 -
Effective C++ 条款30、31
条款30 透彻了解inlining的里里外外Inline函数,看起来像函数,动作像函数,比宏好得多,可以调用它们又不需要蒙受函数调用所招致的额外开销。但是,就像世界没有免费的午餐一样,inline的使用也是有代价的。比如说,使用inline会使整个代码量增加,造成程序体积太大,也可能会导致额外的换页行为,降低指令高速缓存装置的击中率,以及伴随这些而来的效率损失。1、inline只是对编译器...原创 2018-06-11 21:46:45 · 451 阅读 · 0 评论