随笔分类 -  [030_Effective C++]

摘要:第一段程序: 1 #include <iostream> 2 using namespace std; 3 4 class Demo{ 5 public: 6 Demo(int value); // 默认构造函数 7 Demo(const Demo& rhs); // 拷贝构造函数 8 Demo& operator=(const Demo& rhs); // 重载赋值运算符 9 void printInfo(); // 打印成员值函数10 private:11 ... 阅读全文
posted @ 2012-12-27 00:06 邵贤军 阅读(220) 评论(0) 推荐(0) 编辑
摘要:条款07:为多态基类声明virtual析构函数以前写过一篇给这个类似的,参考:[C++基础]023_为什么要将基类的析构函数声明为Virtual?核心内容类似。 阅读全文
posted @ 2012-10-22 23:15 邵贤军 阅读(195) 评论(0) 推荐(0) 编辑
摘要:序言条款06:若不想使用编译器自动生成的函数,就应该明确拒绝 关于本条款,本人认为这样做的目的只有一点:意图:阻止你没有明确定义的功能流向客户手段:屏蔽C++偷偷为你的类提供的功能 比如“=”运算符是C++默默生成的,但是或许你根本不希望你的类可以这样赋值。比如默认构造函数,或许你根本不希望使用者那样构造你的对象。实现手段 要屏蔽C++偷偷为你提供的函数和运算符操作,可以有很多方法。但是作者提供的方法,我也觉得是最好的方法,是怎样好的呢?我们来看代码示例吧! 1 #include <iostream> 2 using namespace std; 3 4 class UnCopya 阅读全文
posted @ 2012-10-22 23:11 邵贤军 阅读(282) 评论(0) 推荐(0) 编辑
摘要:其实这一点在C++的基础类入门书,如C++ primer里面也有说过,不过很少有人去注意而已,作者把这一点提出来,是为了提醒我们。这一条款的内容如下:就是说当你书写下面的【代码片段1】的时候,其实经过编译器处理后,你所书写的代码本质上是【代码片段2】:代码片段1(你亲自手写的):1 class A{2 3 };代码片段2(编译器帮你生成的):1 class A{2 public:3 A() { ... }4 A(const A& rhs) { ... }5 ~A() { ... }6 7 A& operator =(const A& rhs) { ... }8... 阅读全文
posted @ 2012-10-21 22:12 邵贤军 阅读(267) 评论(0) 推荐(0) 编辑
摘要:序言 看书是一件百味陈杂的事。看小说,心思专注时,你能从别人的故事里流出自己的眼泪;看历史,仰望星空时,你能从演变的沧海桑田里发现现实的美好。看技术书籍,自己编示例程序时,你能发现自己离大牛专家的距离有多远,有时简直是天壤之别,甚至感觉自己这辈子都无法企及那样的高度。然而,我们仍不能停下自己的脚步,因为身边的人都在往那个高度攀登着,因为高处的风景,至少,或许更加美好。本文主题 好了,废话不多说,今天我们来看《Effective C++》中的条款04:条款04:确定对象被使用前已先被初始化 Make sure that objects are initialized before th... 阅读全文
posted @ 2012-10-19 18:28 邵贤军 阅读(1033) 评论(0) 推荐(0) 编辑
摘要:参考同事博客:http://www.cnblogs.com/hustcser/archive/2012/10/19/2731085.html 阅读全文
posted @ 2012-10-17 01:32 邵贤军 阅读(258) 评论(0) 推荐(0) 编辑
摘要:作者在本节提醒读者注意两点:1. 对于单纯的常量,最好以const对象或enum替换#define2. 对于形就似函数的宏定义,最好改用inline函数替换#define1. 对于单纯的常量,最好以const对象或enum替换#define 在阅读这一条的时候,我们要知道为什么要用const对象或enum来替换#define,要知道#define定义的常量的缺陷。首先,用#define定义的常量在预处理时,就被定义的值替换掉,也就是参与编译的内容并没有我们定义的常量名字,也就不会被计入常量表,这样发生错误的时候,我们是无法跟踪错误的源头的。但是,对于congst常量和enum的值,编译阶段或调 阅读全文
posted @ 2012-10-17 01:30 邵贤军 阅读(299) 评论(0) 推荐(0) 编辑
摘要:关于本条款,作者一直在向我们强调一个观点,那就是不要把C++当做我们学过的单纯语言,而要把C++当做一个具有多个独立特性的联邦语言。1. C++由C发展而来,它兼容一切C的语法特性,因此,C++国度里的第一个联邦——C语言,即面向过程的代表语言。2. 从一开始,C++引入了面向对象的特性,即C++一开始的名称C with classes,这是C++的第二个联邦——面向对象语言。3. 接着就是C++ Template,这部分语法特性使得C++支持泛型编程,因此,这可以作为C++的第三个联邦——Template编程语言。4. 最后就是有名的STL,作为C++泛型编程的代表作,虽然在C++的语言框. 阅读全文
posted @ 2012-10-17 01:28 邵贤军 阅读(265) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示