![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Effective C++
文章平均质量分 70
first_wolf
linux
展开
-
Effective C++(一)让自己习惯C++
条款1:视C++为一个语言联邦。(1)C++是四个次语言组成的联邦,每个语言都有自己的规约。当从一个次语言移往到另一个次次语言,守则可能要改变。(2)C++共有四个次语言组成:*C。*Object-oriented C++。*Template C++。*STL。条款2:尽量以const,enum,inline替换#define。(1)对于单纯常量,最好以co原创 2013-05-25 20:24:12 · 754 阅读 · 0 评论 -
Effective C++(五)实现
一 尽可能延后变量定义式的出现时间:(1)改善效率:避免构造和析构非必要对象。(2)增加程序的清晰度。二 尽量少做转型动作:(1)C++提供的新式转型:*const_cast(expression):将对象的const属性移除。*static_cast(expression):基本上拥有与C旧式类型转换相同的威力和限制。*reinterpret_cast(exp原创 2013-06-09 21:37:12 · 560 阅读 · 0 评论 -
More Effective(二)操作符
待续原创 2013-07-11 17:26:59 · 808 阅读 · 0 评论 -
Inside The C++ Object Model(一)关于对象
一 C++对象模式:(1)数据成员:*Non-static data members:对象内部。*Static data members:对象外部。(2)成员函数:*Static和Non-static function members:对象之外。*Virtual function:指向虚函数表(virtual table)的指针vptr放在对象内部。(3)虚函数:*原创 2013-06-18 13:55:51 · 768 阅读 · 0 评论 -
More Effective(四)效率
待续...原创 2013-07-11 17:28:28 · 782 阅读 · 0 评论 -
More Effective(五)技术(一)
待续...原创 2013-07-11 17:28:56 · 572 阅读 · 0 评论 -
More Effective(六)杂项讨论
待续...原创 2013-07-20 20:40:23 · 755 阅读 · 0 评论 -
Inside The C++ Object Model(五)构造、拷贝、析构语意学
待续...原创 2013-06-18 13:57:25 · 863 阅读 · 0 评论 -
More Effective(一)基础议题
条款一 仔细区别pointers和references:(一) 指针与引用的区别:(1)引用只是对象的一个别名,不是新定义了一个变量,它本身不占内存;指针不同,指针本身占有内存,指针本质上是一个存放变量地址的变量。(2)reference不能为null,一个引用必须代表某个对象。pointers可以为null。因此,使用引用之前不需测试其有效性,而指针需测试它是否为null。(3)原创 2013-06-30 20:49:04 · 702 阅读 · 0 评论 -
More Effective(五)技术(二)
待续,,,原创 2013-07-20 20:39:36 · 588 阅读 · 0 评论 -
More Effective(三)异常
待续...原创 2013-07-11 17:27:29 · 777 阅读 · 0 评论 -
Inside The C++ Object Model(四)函数语意学
待续...原创 2013-06-18 13:57:08 · 815 阅读 · 0 评论 -
Inside The C++ Object Model(六)执行期语意学
待续...原创 2013-06-18 13:57:46 · 726 阅读 · 0 评论 -
Effective C++(四)设计和声明
一 让接口更容易被正确使用,不易被误用:(1)“促进接口正确使用”的方法:接口的一致性以及与内置类型的行为兼容。(2)“阻止误用”的方法:建立新类型、限制类型上的操作、束缚对象值以及消除客户的资源管理责任。(3)tr1::shared_ptr支持定制的删除器(仿函数),可用来自动解除互斥锁等。二 设计class犹如设计type:*应该和语言设计者当初设计语言内置类型一样原创 2013-06-08 18:36:26 · 689 阅读 · 0 评论 -
Effective C++(六)继承与面向对象设计
零 综述(1)class之间的关系:*is-a:public继承。*has-a:复合(composition)发生于应用域。*is-implemented-in-terms-of:private继承和复合发生于实现域。(2)继承:*只继承接口:声明一个pure virtual函数。*继承接口和缺省实现,能够被覆写:声明一个impure virtual函数。*继承接口原创 2013-06-10 17:04:14 · 671 阅读 · 0 评论 -
Effective C++(九)杂项讨论
一 不要忽视编译器的警告:(1)严肃对待编译器发出的警告消息。努力在你编译器的最高警告级别(gcc -Wall)下争取“无任何警告”的荣誉。(2)不要过度依赖编译器的警告行为,因为不同编译器对待事情的态度不同。二 让自己熟悉包括TR1在内的标准程序库。三 让自己熟悉Boost。原创 2013-06-11 18:30:36 · 601 阅读 · 0 评论 -
Effective C++(七)模板与泛型编程
一 了解隐式接口和编译器多态:(1)面向对象:显示接口(explicit interfaces)+运行时多态(runtime polymorphism)。(2)Templates和泛型编程:主导是隐式接口(implicit interfaces)+编译时多态(compile-time polymorphism);显示接口和运行多态仍然存在。(3)运行时多态:virtual函数;编译时多原创 2013-06-10 17:05:37 · 788 阅读 · 0 评论 -
Effective C++(八)定制new和delete
一 了解new-handler的行为:(1)new-handler:当operator new抛出异常以反映一个未获满足的内存需求之前,它会先调用一个客户指定的错误处理函数。(2)客户需要调用set_new_handler(声明与一个标准程序库函数)以指定一个“用于处理内存不足”的函数。*namespace std{typedef void (*new_handler)();原创 2013-06-10 17:05:58 · 616 阅读 · 0 评论 -
Effective C++(二)构造、析构和赋值操作
条款5 :了解C++默认生成并调用哪些函数。1)编译器在编译器需要的情况下会自动为class创建default构造函数、copy构造函数、copy assignment操作符以及析构函数,自动生成的函数为public而且inline。(注意:不是任何class没有定义这些函数,编译器都会自动生成)。2)编译器生成的这些函数只满足编译器的需要而不是程序的需要。条款6 :若不想使用原创 2013-05-27 14:35:59 · 796 阅读 · 0 评论 -
Effective C++(三)资源管理
一 以对象管理资源:(1)RAII(Resource Acquisition Is Initialization):资源取得时即初始化。例如:auto_ptr和shared_ptr等(详见智能指针文章)。(2)为防止资源泄漏,请使用RAII对象,它们在构造函数中获得资源并在析构函数中释放资源。二 在资源管理类(自己定义的)中小心copying行为:(1)并非所有资源都是he原创 2013-06-01 20:52:46 · 821 阅读 · 0 评论 -
Inside The C++ Object Model(七)站在对象模型的尖端
待续...原创 2013-06-18 13:58:06 · 678 阅读 · 0 评论 -
Inside The C++ Object Model(三)Data语意学
待续...原创 2013-06-18 13:56:53 · 905 阅读 · 0 评论 -
Inside The C++ Object Model(二)构造函数语意学
待续...原创 2013-06-18 13:56:36 · 675 阅读 · 0 评论 -
static关键字
一 概述:*static在c++中主要有两种用法:面向过程中的static和面向对象中的static。*前者主要针对变量和函数,后者主要针对在类中的作用。二 面向过程中static:(1)静态全局变量:*在全局变量前面,加上关键字static,该变量就定义为静态全局变量。*特点:~在全局数据区分配内存;~在声明它的整个文件可见,在文件之外不可见即不能被其原创 2013-02-02 14:44:28 · 409 阅读 · 0 评论