<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[onejune的博客]]></title><description><![CDATA[日拱一卒，功不唐捐]]></description><link>https://blog.youkuaiyun.com/wanjun8659</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; wanjun8659]]></copyright><item><title><![CDATA[ESMM图片库]]></title><link>https://blog.youkuaiyun.com/wanjun8659/article/details/83933991</link><guid>https://blog.youkuaiyun.com/wanjun8659/article/details/83933991</guid><author>wanjun8659</author><pubDate>Sat, 10 Nov 2018 22:29:14 +0800</pubDate><description><![CDATA[

]]></description><category></category></item><item><title><![CDATA[linux下c++实现文件监控]]></title><link>https://blog.youkuaiyun.com/wanjun8659/article/details/77388696</link><guid>https://blog.youkuaiyun.com/wanjun8659/article/details/77388696</guid><author>wanjun8659</author><pubDate>Fri, 18 Aug 2017 22:24:28 +0800</pubDate><description><![CDATA[linux下文件监控]]></description><category></category></item><item><title><![CDATA[c实现内存文件系统]]></title><link>https://blog.youkuaiyun.com/wanjun8659/article/details/20650683</link><guid>https://blog.youkuaiyun.com/wanjun8659/article/details/20650683</guid><author>wanjun8659</author><pubDate>Thu, 06 Mar 2014 20:46:42 +0800</pubDate><description><![CDATA[华为软件训练营的一个高级练习题，比较有意思，值得练习一下！










    题目不是很难，主要是考察一下几个知识点：
    （1）数据结构中树的操作，包括树的定义、树的遍历、节点的插入和删除，这里采用了带双亲的孩子兄弟表示法，实际上可以转换为二叉树，可以采用中序遍历的方式访问树的节点。
    （2）内存管理。树节点中存放有树的信息，在每次插入一个新节点的时]]></description><category></category></item><item><title><![CDATA[C++”前置声明“那些事儿]]></title><link>https://blog.youkuaiyun.com/wanjun8659/article/details/17002303</link><guid>https://blog.youkuaiyun.com/wanjun8659/article/details/17002303</guid><author>wanjun8659</author><pubDate>Thu, 28 Nov 2013 14:47:05 +0800</pubDate><description><![CDATA[今天在研究C++”接口与实现分离“的时候遇到了一个问题，看似很小，然后背后的东西确值得让人深思！感觉在学习的过程中有太多的为什么，而每一个为什么背后都隐藏着一些原理和目的，所以得多问自己”为什么“，这样才不仅知其然，更知其所以然，才能举一反三、融会贯通，这也是我以前学习不够重视的一个问题，好在”亡羊补牢，犹未晚也！“。
        C++中将”接口与实现分离“的两个重要目的就是”降低文件间的]]></description><category></category></item><item><title><![CDATA[C++的”接口与实现分离“实现方法]]></title><link>https://blog.youkuaiyun.com/wanjun8659/article/details/16986971</link><guid>https://blog.youkuaiyun.com/wanjun8659/article/details/16986971</guid><author>wanjun8659</author><pubDate>Wed, 27 Nov 2013 16:04:52 +0800</pubDate><description><![CDATA[让我们从stackoverflow上一个同学的问题来开始。问题的原型是这样的（原问题见:class member privacy and headers in C++）：
Portaljacker：“有一个类A， 有一些共有成员函数和私有数据，如下所示。”

    class A  
    {  
    public:  
      X getX();  
      Y getY(]]></description><category></category></item><item><title><![CDATA[《Effective C++》之异常安全性和异常安全函数]]></title><link>https://blog.youkuaiyun.com/wanjun8659/article/details/16944527</link><guid>https://blog.youkuaiyun.com/wanjun8659/article/details/16944527</guid><author>wanjun8659</author><pubDate>Mon, 25 Nov 2013 16:25:46 +0800</pubDate><description><![CDATA[本篇文章是在学习“《Effective C++》item29：为“异常安全”而努力是值得的”的一个总结，主要介绍C++的异常安全性和异常安全函数。一个函数如果说是“异常安全”的，必须同时满足以下两个条件：1.不泄漏任何资源；2.不允许破坏数据。为了让代码具有更好的异常安全性，首先是”用对象来管理资源“，以避免资源的泄漏。其次，在异常安全性等级上，应该尽可能地往更高的等级上来限制。通过 copy-and-swap 方法往往可以实现”强烈保证“。但是我们也应该知道，”强烈保证“并不是对所有的情况都可实现，这取决]]></description><category></category></item><item><title><![CDATA[《Effective C++》item28：避免返回handles（即：Reference、指针、迭代器）指向对象内部成分]]></title><link>https://blog.youkuaiyun.com/wanjun8659/article/details/16914971</link><guid>https://blog.youkuaiyun.com/wanjun8659/article/details/16914971</guid><author>wanjun8659</author><pubDate>Sun, 24 Nov 2013 07:09:51 +0800</pubDate><description><![CDATA[避免返回handles指向对象的内部（主要是对象的数据成员有其他类对象）。遵守这个条款可增加封装性（防止通过类的public接口修改对象的值），帮助const成员函数更加像一个const（通过handle间接修改const常量的内部值），并将“虚号码牌“的可能性降低到最低（handle指向一个已经析构了的对象）。]]></description><category></category></item><item><title><![CDATA[《Effective C++》item25：考虑写出一个不抛异常的swap函数]]></title><link>https://blog.youkuaiyun.com/wanjun8659/article/details/16885047</link><guid>https://blog.youkuaiyun.com/wanjun8659/article/details/16885047</guid><author>wanjun8659</author><pubDate>Fri, 22 Nov 2013 15:07:49 +0800</pubDate><description><![CDATA[std::swap（）是个很有用的函数，它可以用来交换两个变量的值，包括用户自定义的类型，只要类型支持copying操作，尤其是在STL中使用的很多，例如：





[cpp] view
 plaincopyprint?






int main(int argc, _TCHAR* argv[])  
{  
    int a[10] = {1,2,3,4,]]></description><category></category></item><item><title><![CDATA[C++转换构造函数和隐式转换函数]]></title><link>https://blog.youkuaiyun.com/wanjun8659/article/details/16803321</link><guid>https://blog.youkuaiyun.com/wanjun8659/article/details/16803321</guid><author>wanjun8659</author><pubDate>Mon, 18 Nov 2013 14:30:44 +0800</pubDate><description><![CDATA[今天是第一次听到C++还有个转换构造函数，之前经常见到默认构造函数、拷贝构造函数、析构函数，但是从没听说过转换构造函数，隐式转换函数也是一样，C++的确是够博大精深的，再次叹服！
         其实我们已经在C/C++中见到过多次标准类型数据间的转换方式了，这种形式用于在程序中将一种指定的数据转换成另一指定的类型，也即是强制转换，比如：int a = int(1.23),其作用是将1.23转]]></description><category></category></item><item><title><![CDATA[《Effective C++》item11：在operator=中处理“自我赋值”]]></title><link>https://blog.youkuaiyun.com/wanjun8659/article/details/16355797</link><guid>https://blog.youkuaiyun.com/wanjun8659/article/details/16355797</guid><author>wanjun8659</author><pubDate>Sat, 16 Nov 2013 12:55:44 +0800</pubDate><description><![CDATA[“自我赋值”是个看似不可能但却又让人望而生畏的东西，貌似几乎不会有人写出
         Point p;
         p = p;
         这样的二逼程序，虽然不会出现编译错误，但确实是个能造成异常的语句！What‘s more，这样的“自我赋值”的机会并不少见，我们来看下面这个例子：
#include "stdafx.h"
#include 

using names]]></description><category></category></item><item><title><![CDATA[一个编译错误引发的对default构造函数的调用时机的探讨]]></title><link>https://blog.youkuaiyun.com/wanjun8659/article/details/16353973</link><guid>https://blog.youkuaiyun.com/wanjun8659/article/details/16353973</guid><author>wanjun8659</author><pubDate>Sat, 16 Nov 2013 08:39:18 +0800</pubDate><description><![CDATA[这是一个很容易让人迷惑的principle！按照我们对C++多态性的理解：定义基类中某个函数为虚函数是为了允许用基类的指针来调用子类的这个函数。通过virtual函数实现程序运行时候的动态调用。]]></description><category></category></item><item><title><![CDATA[《Effective C++》item9：决不在构造和析构过程中调用virtual函数]]></title><link>https://blog.youkuaiyun.com/wanjun8659/article/details/16339603</link><guid>https://blog.youkuaiyun.com/wanjun8659/article/details/16339603</guid><author>wanjun8659</author><pubDate>Fri, 15 Nov 2013 15:13:24 +0800</pubDate><description><![CDATA[这是一个很容易让人迷惑的principle！按照我们对C++多态性的理解：定义基类中某个函数为虚函数是为了允许用基类的指针来调用子类的这个函数。通过virtual函数实现程序运行时候的动态调用。
        However，是不是只要在基类中使用了virtual函数就一定能够实现这种动态调用呢？是否只要在base class中定义了虚函数，那么在通过基类指针指向子类的时候就一定会调用子类实现]]></description><category></category></item><item><title><![CDATA[由Point p1 = p和p1 = p的区别想到的关于copy构造函数和赋值操作符重载函数的调用时机问题]]></title><link>https://blog.youkuaiyun.com/wanjun8659/article/details/16337769</link><guid>https://blog.youkuaiyun.com/wanjun8659/article/details/16337769</guid><author>wanjun8659</author><pubDate>Fri, 15 Nov 2013 11:40:37 +0800</pubDate><description><![CDATA[今天在论坛上看到一个帖子：http://bbs.youkuaiyun.com/topics/390642928?page=1#post-396087799，涉及到一个copy构造函数和赋值操作符重载函数的调用时机问题，更正了我一直以来的一个对着俩函数的理解上的误区，这个错误相信很多人都会犯过，随后我问了周围几个人，果然不出所料！特此记录，以飨读者！
       首先看这样一个简单的程序，涉及到copy构造]]></description><category></category></item><item><title><![CDATA[《Effective C++》item7：为多态基类声明virtual析构函数]]></title><link>https://blog.youkuaiyun.com/wanjun8659/article/details/16330087</link><guid>https://blog.youkuaiyun.com/wanjun8659/article/details/16330087</guid><author>wanjun8659</author><pubDate>Thu, 14 Nov 2013 21:41:42 +0800</pubDate><description><![CDATA[（1）为什么要用虚函数？
（2）为什么要定义virtual析构函数？
（3）什么时候该定义virtual析构函数和什么时候不该定义virtual析构函数？]]></description><category></category></item><item><title><![CDATA[《Effective C++》Item6: 如果你不想使用编译器生成的函数，就该明确拒绝！]]></title><link>https://blog.youkuaiyun.com/wanjun8659/article/details/16115455</link><guid>https://blog.youkuaiyun.com/wanjun8659/article/details/16115455</guid><author>wanjun8659</author><pubDate>Thu, 14 Nov 2013 13:41:29 +0800</pubDate><description><![CDATA[通过对item5的学习我们知道：编译器会暗自为class创建default构造函数、copy构造函数、copy assignment操作符以及析构函数。
        but，有时候我们不希望我们的类有某些特定功能，通常的做法就是不声明具有这些功能的函数就可以了，however，对于某些与生俱来的功能——比如copy构造和copy assignment，即使我们不声明，系统也会自动生成。
 ]]></description><category></category></item><item><title><![CDATA[一个VC编译错误引发的对显示类型转换的思考（static_cast、dynamic_cast和const_cast）]]></title><link>https://blog.youkuaiyun.com/wanjun8659/article/details/15814149</link><guid>https://blog.youkuaiyun.com/wanjun8659/article/details/15814149</guid><author>wanjun8659</author><pubDate>Wed, 13 Nov 2013 16:31:45 +0800</pubDate><description><![CDATA[error C2662: 'getY' : cannot convert 'this' pointer from 'const class point' to 'class point &' 的解决办法，以及对显示的类型转换static_cast、dynamic_cast、reinterpret_cast、和const_cast的探讨。]]></description><category></category></item><item><title><![CDATA[《Effective C++》item5:了解C++默默编写并调用哪些函数(Know what functions C++ silently writes and calls.)]]></title><link>https://blog.youkuaiyun.com/wanjun8659/article/details/15812421</link><guid>https://blog.youkuaiyun.com/wanjun8659/article/details/15812421</guid><author>wanjun8659</author><pubDate>Wed, 13 Nov 2013 14:46:03 +0800</pubDate><description><![CDATA[阅读本条款内容又有了不少新的收获，虽然本条款比较简单。有些在以往学习c++的过程中一成不变的看法在这里得到颠覆！

Questions:

(1)空类真的是empty class吗？( Is empty class a empty body class?)
(2)copy构造函数和copy assignment操作符？
(3)在什么情况下编译器会拒绝为class生成operator=？]]></description><category></category></item><item><title><![CDATA[《Effective C++》Item4：确定对象被使用前已先被初始化]]></title><link>https://blog.youkuaiyun.com/wanjun8659/article/details/15569139</link><guid>https://blog.youkuaiyun.com/wanjun8659/article/details/15569139</guid><author>wanjun8659</author><pubDate>Tue, 12 Nov 2013 21:23:11 +0800</pubDate><description><![CDATA[Questions:
 
（1）为什么需要在对象使用前初始化？
（2）关于默认构造函数的几点认识？
（3）为什么要使用参数初始化表进行初始化？
 

----------------------------------------------------------------------------------------------------------------------]]></description><category></category></item><item><title><![CDATA[关于“error C2871: 'std' : does not exist or is not a namespace”和“Error spawning cl.exe“的解决办法]]></title><link>https://blog.youkuaiyun.com/wanjun8659/article/details/15500669</link><guid>https://blog.youkuaiyun.com/wanjun8659/article/details/15500669</guid><author>wanjun8659</author><pubDate>Tue, 12 Nov 2013 12:40:44 +0800</pubDate><description><![CDATA[今天在使用VC6运行程序的时候出现了几个新的error，以前没有碰到，总结一下，希望对其他同学有帮助：



1.Error spawning cl.exe 



错误分析：


这个error一般在点击“Compile”或者“Build”后出现的：“Compiling... ,Error spawning cl.exe”，“cl.exe”是VC使用的真正的编译器（编译程序]]></description><category></category></item><item><title><![CDATA[《Effective C++》Item3：尽可能使用const]]></title><link>https://blog.youkuaiyun.com/wanjun8659/article/details/15027681</link><guid>https://blog.youkuaiyun.com/wanjun8659/article/details/15027681</guid><author>wanjun8659</author><pubDate>Sun, 10 Nov 2013 13:42:55 +0800</pubDate><description><![CDATA[Answers：
（1）const的使用场合有哪些？
（2）const的规则？
（3）const函数？
（4）const STL迭代器？
（5）const函数重载？

--------------------------------------------------------------------------------------------->
Questions：]]></description><category></category></item></channel></rss>