<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[奋斗中的苦逼2B程序员]]></title><description><![CDATA[庸庸碌碌过了两年，冒然回首，一无所成，开一blog，记录学习历程]]></description><link>https://blog.csdn.net/flyaway2002</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; flyaway2002]]></copyright><item><title><![CDATA[Effective C++学习笔记 （14）]]></title><link>https://blog.csdn.net/flyaway2002/article/details/7965217</link><guid>https://blog.csdn.net/flyaway2002/article/details/7965217</guid><author>flyaway2002</author><pubDate>Tue, 11 Sep 2012 00:03:44 +0800</pubDate><description><![CDATA[本人学习C++不精，故重新学习，点滴记录与大家分享，不足之处还望大牛多多指教。

在资源管理类中小心copying行为 
         对于上一条款所讲的RAII（资源取得时便是初始化时机）原则，本条款对于资源管理类的拷贝行为进行了说明，大概分为以下几种：在执行copy时采用深度拷贝，把管理类的资源也一起拷贝；禁止copy行为（将拷贝构造函数或者赋值运算符私有化）；使用引用计数（shar]]></description><category></category></item><item><title><![CDATA[Effective C++学习笔记 （13）]]></title><link>https://blog.csdn.net/flyaway2002/article/details/7965148</link><guid>https://blog.csdn.net/flyaway2002/article/details/7965148</guid><author>flyaway2002</author><pubDate>Mon, 10 Sep 2012 23:34:33 +0800</pubDate><description><![CDATA[本人学习C++不精，故重新学习，点滴记录与大家分享，不足之处还望大牛多多指教。

以对象管理资源 
由于在写代码时很多时候需要用到资源，比如new一个对象之类的，这样一来资源的申请和释放需要程序员自己完成，对代码的逻辑需要谨慎设计，才能保证资源不会泄漏。
其实这类似的编程风格，在之前写C的时候也有编码规范来规定资源的释放，比如do while的运用啊，goto Exit0之类的方法，但是对]]></description><category></category></item><item><title><![CDATA[Effective C++学习笔记 （12）]]></title><link>https://blog.csdn.net/flyaway2002/article/details/7958526</link><guid>https://blog.csdn.net/flyaway2002/article/details/7958526</guid><author>flyaway2002</author><pubDate>Sat, 08 Sep 2012 17:34:11 +0800</pubDate><description><![CDATA[本人学习C++不精，故重新学习，点滴记录与大家分享，不足之处还望大牛多多指教。

条款12：复制对象时勿忘其每一个成分 

         其实当我看到这个标题的时候我在想是不是说的深度拷贝的问题，但是我发现我想多了，毕竟这本书不是一本C++基础教程。该条款主要是针对在继承中，子类实现拷贝构造函数或者赋值运算符时，父类的成员变量没有初始化的问题。
         首先还是看下代码吧。]]></description><category></category></item><item><title><![CDATA[Effective C++学习笔记 （11）]]></title><link>https://blog.csdn.net/flyaway2002/article/details/7958522</link><guid>https://blog.csdn.net/flyaway2002/article/details/7958522</guid><author>flyaway2002</author><pubDate>Sat, 08 Sep 2012 17:32:13 +0800</pubDate><description><![CDATA[本人学习C++不精，故重新学习，点滴记录与大家分享，不足之处还望大牛多多指教。

在operator=中处理“自我赋值” 

         该条款首先提出了有可能出现自我赋值的情况，同时提出了几种可能存在的潜在自我赋值，然后通过解释了自我赋值可能出现的问题，以及如何解决“自我赋值”以及“异常安全性”这两类问题。
         首先看一下以下的代码


这样运用赋值运算符没任]]></description><category></category></item><item><title><![CDATA[Effective C++学习笔记 （10）]]></title><link>https://blog.csdn.net/flyaway2002/article/details/7958521</link><guid>https://blog.csdn.net/flyaway2002/article/details/7958521</guid><author>flyaway2002</author><pubDate>Sat, 08 Sep 2012 17:29:29 +0800</pubDate><description><![CDATA[本人学习C++不精，故重新学习，点滴记录与大家分享，不足之处还望大牛多多指教。

令operator=返回一个reference to*this

         为什么要这么做呢？看个例子吧，如x = y = z = 1，这是一个赋值表达式，由于赋值表达式可以写成连锁形式，而且也是遵循右结合律的，所以在实现赋值运算符时都必须返回一个this的引用。其实这一条款说的有些教条化，但是这个需]]></description><category></category></item><item><title><![CDATA[Effective C++学习笔记 （9）]]></title><link>https://blog.csdn.net/flyaway2002/article/details/7948601</link><guid>https://blog.csdn.net/flyaway2002/article/details/7948601</guid><author>flyaway2002</author><pubDate>Wed, 05 Sep 2012 23:03:28 +0800</pubDate><description><![CDATA[本人学习C++不精，故重新学习，点滴记录与大家分享，不足之处还望大牛多多指教。

条款9：绝不在构造函数和析构函数过程中调用virtual函数

         当初面试遇到的面试题，后悔看完了，今天一看觉得当时回答的一塌糊涂。
         先看代码吧。
        

         汇编如下：



         在父类的构造函数中调用output虚函]]></description><category></category></item><item><title><![CDATA[Effective C++学习笔记 （8）]]></title><link>https://blog.csdn.net/flyaway2002/article/details/7948380</link><guid>https://blog.csdn.net/flyaway2002/article/details/7948380</guid><author>flyaway2002</author><pubDate>Wed, 05 Sep 2012 22:05:12 +0800</pubDate><description><![CDATA[本人学习C++不精，故重新学习，点滴记录与大家分享，不足之处还望大牛多多指教。

别让异常逃离析构函数

         其实看完改条款我的理解不是很深，下来自己想了下还是有所领悟。为什么析构函数里最好不要抛出异常，其实原因可以这样理解，一个对象的析构函数是在该对象离开作用域之后调用的，所以这个时候不是所有的外部调用都会去处理这个异常的，如果没人处理那么很可能程序就crash了，出错了等]]></description><category></category></item><item><title><![CDATA[Effective C++学习笔记 （7）]]></title><link>https://blog.csdn.net/flyaway2002/article/details/7944585</link><guid>https://blog.csdn.net/flyaway2002/article/details/7944585</guid><author>flyaway2002</author><pubDate>Wed, 05 Sep 2012 00:59:11 +0800</pubDate><description><![CDATA[本人学习C++不精，故重新学习，点滴记录与大家分享，不足之处还望大牛多多指教。

条款7：为多态基类申明virtual析构函数

         其实该条款在任何一门C++课堂上老师都会讲到，把基类的析构函数申明为virtual的，这样一来在接口释放时候子类才能被正真析构。
1、  先来看看编译器是如何帮我们实现的，对于基类析构函数不为虚函数的情况
代码和编译生成的汇编如下：]]></description><category></category></item><item><title><![CDATA[Effective C++学习笔记 （6）]]></title><link>https://blog.csdn.net/flyaway2002/article/details/7940275</link><guid>https://blog.csdn.net/flyaway2002/article/details/7940275</guid><author>flyaway2002</author><pubDate>Tue, 04 Sep 2012 00:56:46 +0800</pubDate><description><![CDATA[本人学习C++不精，故重新学习，点滴记录与大家分享，不足之处还望大牛多多指教。

若不想使用编译器自动生成的函数，就该明确拒绝
         其实本条款讲的比较简洁，由于条款5说明了“默认构造函数”、“拷贝构造函数”、“复制运算符”这三个虽然用户不自己定义，但是用到的时候编译器还是会为它们生成代码，所以就导致了一些情况下， 用户不想提供拷贝构造函数，但是编译器默认生成了，解决这类问题主要]]></description><category></category></item><item><title><![CDATA[Effective C++学习笔记 （5）]]></title><link>https://blog.csdn.net/flyaway2002/article/details/7940273</link><guid>https://blog.csdn.net/flyaway2002/article/details/7940273</guid><author>flyaway2002</author><pubDate>Tue, 04 Sep 2012 00:54:13 +0800</pubDate><description><![CDATA[本人学习C++不精，故重新学习，点滴记录与大家分享，不足之处还望大牛多多指教。

了解C++默默编写并调用哪些函数
         在你编写一个空类的时候，C++其实为你默默编写了这几个函数：默认构造函数、拷贝构造函数、赋值运算符以及析构函数（非virtual的）。这几个函数只有当你需要时才会被编译器创建出来。
1、  实践代码如下：



汇编如下：



2、  对于]]></description><category></category></item><item><title><![CDATA[Effective C++学习笔记 （4）]]></title><link>https://blog.csdn.net/flyaway2002/article/details/7940251</link><guid>https://blog.csdn.net/flyaway2002/article/details/7940251</guid><author>flyaway2002</author><pubDate>Tue, 04 Sep 2012 00:36:47 +0800</pubDate><description><![CDATA[本人学习C++不精，故重新学习，点滴记录与大家分享，不足之处还望大牛多多指教。

确定对象被使用前已先被初始化
         讲述了几种对象的初始化的方法，如类的自定义成员变量、C++内置类型变量的初始化、继承中的成员变量初始化、static对象的初始化。
1、  对了类的成员变量初始化，建议在构造函数里使用初始化列表进行初始化，如果有赋值操作的话可以在构造函数内部完成。需要区分开“初]]></description><category></category></item><item><title><![CDATA[Effective C++学习笔记 （3）]]></title><link>https://blog.csdn.net/flyaway2002/article/details/7940249</link><guid>https://blog.csdn.net/flyaway2002/article/details/7940249</guid><author>flyaway2002</author><pubDate>Tue, 04 Sep 2012 00:32:06 +0800</pubDate><description><![CDATA[本人学习C++不精，故重新学习，点滴记录与大家分享，不足之处还望大牛多多指教。

尽可能使用const
从const在变量、对象、函数参数、函数返回值、成员函数上都可以应用。
1、 在变量和对象上：
A、constchar *p = “abc”                 //数据const，指针non const
char * const p = “abc”]]></description><category></category></item><item><title><![CDATA[Effective C++学习笔记 （2）]]></title><link>https://blog.csdn.net/flyaway2002/article/details/7940247</link><guid>https://blog.csdn.net/flyaway2002/article/details/7940247</guid><author>flyaway2002</author><pubDate>Tue, 04 Sep 2012 00:30:30 +0800</pubDate><description><![CDATA[本人学习C++不精，故重新学习，点滴记录与大家分享，不足之处还望大牛多多指教。

尽量以const、enum、inline、替换#define
1、#define在编译器之前先由预编译器做替换；
2、所以PDB里没有#define；
3、#define重复定义，出现多分，可能出现不同的值；
4、const存在类型检查；
5、const成员可以封装，比如在一个class里面定义一个st]]></description><category></category></item><item><title><![CDATA[Effective C++学习笔记 （1）]]></title><link>https://blog.csdn.net/flyaway2002/article/details/7940240</link><guid>https://blog.csdn.net/flyaway2002/article/details/7940240</guid><author>flyaway2002</author><pubDate>Tue, 04 Sep 2012 00:28:18 +0800</pubDate><description><![CDATA[本人学习C++不精，故重新学习，点滴记录与大家分享，不足之处还望大牛多多指教。

视C++为一个语言联邦

主要把C++分为四个部分吧：
1、 C：一种支持过程形式、函数形式编程的语言；
2、 Object-OrientedC++：面向对象形式的语言；
3、 TemplateC++:泛型编程、模版元编程；
4、 STL：用STL代替了一类template程序库；
付：其实个人对3]]></description><category></category></item></channel></rss>