[置顶] Effective C++ 学习之-------尽量以const inline enum 代替#define

摘要: 记得在大学暑假的时候看过一遍<Effective C++>,由于当时对整个C++的认识比较的肤浅,很难能真正能体会到Effective中的每一点的含义,好像当时就像读小说一样给读过去了。最近重新开始了这本书的实践性学习,在这里记载一些重新读这本书的收获和一些新的认识。其中可能由于自己的认识不够深入,有错误理解的地方,还希望园中各位朋友多多指正。 其中的第一条就不在这里细写了,其中的关键就是分清楚C++是由那几部分组成的,并且明确你正在使用的是那一部分以及各个部分之间有什么联系。自己的目标是以后每周能够好好的细读其中的3-4个主题,而且将每一条的学习进行详细的整理。现在就从第二条开始 阅读全文
posted @ 2013-03-31 18:17 zkqian 阅读(283) 评论(0) 推荐(0) 编辑

APUE学习之------------信号

摘要: 在学习一个东西的时候我总是喜欢去问这样做的理由是什么?也喜欢去究竟他的历史。从中你可以发现所有的设计都在不断改进出来的,从来就没有一个设计是一开始就是完美的。好比是人,之初,性也许是善的,如果我们不通过后天的学习去让自己的心灵完美的话,他就只停留在了人的初级阶段了。 对于信号(signal)也是如... 阅读全文
posted @ 2014-09-08 11:11 zkqian 阅读(580) 评论(0) 推荐(1) 编辑

APUE学习之---------------进程

摘要: 离职了,交接期也有足够的时间了,可以在好好的再看一下APUE,想想上次详细的看还是在两年之前,虽然中间也偶尔会翻出来看看,但是由于工作上交集相对比较少一直没有去细读一下。现在正好是一段空挡期可以好好看下书了。 第八章之前是一些基础性的东西,如果需要的话可以在后面的文字中稍微提一下,主要还是从进程开... 阅读全文
posted @ 2014-08-30 10:54 zkqian 阅读(587) 评论(0) 推荐(1) 编辑

写在今天不是明天

摘要: 查看了一下自己的博客记录,发现好久没有写了,突然发生的事情有时候让你不得不重新计划着下一步的路应该怎么走,一个石头把你绊倒了,那你就应该学者重新站起来。对生活并不是没有想法,缺乏的是将一个想法真正去实现的那种动力和坚定的信念。匆匆过去的2013以及将近走了一半的2014让我看到了很多的东西,有人的失意有人的得意,同时也更加的坚定了自己选择,今后的日子里我会更加努力的去完善自己,修正自己的缺点。在软... 阅读全文
posted @ 2014-05-15 23:14 zkqian 阅读(119) 评论(0) 推荐(0) 编辑

Linux 下的多线程编程

摘要: 随着你对编程的深入,多线程是一个免不了的话题,在这里就对多线程做一个比较详细的总结。 首先摆在我们面前的就是什么是线程,以及为么会有这个东西。记得之前学习的时候自己会画一张很大的图,在图中可以详细的写出线程为什么会出现?他是为了解决什么问题才出现的?线程的出项肯定是针对进程的,那就看看它针对进程的那些特性进行了改进吧: 1. 通过每种任务的类型,将各种任务分配给单独的线程,每个线程在处理任务的时候可以采用同步编程的方式 2. 所有的线程都可以访问同一进程内的全局变量/文件描述符/heap memory等,这比多进程中的共享memory等方便很多 3. 线程间的上下文切换和通信比进程... 阅读全文
posted @ 2013-08-25 22:43 zkqian 阅读(1179) 评论(0) 推荐(1) 编辑

Linux设置高分辨率后无法进入X系统

摘要: Vmware9.0中Xubuntu分辨率从800x600变更为1366x768后在用户输入密码登录后会自动退出x系统,出现这种情况时可以切换到命令行登录界面,然后将~/.config/xfce4/xfconf/xfce-perchannel-xml/displays.xml文件中 中value改为800x600就可以正常登录。 阅读全文
posted @ 2013-07-28 14:17 zkqian 阅读(431) 评论(1) 推荐(0) 编辑

C++中struct和class的总结

摘要: 一.在语法上的一些区别由于C++是从C发展而来,C++中的struct更多的是去做了兼容的C的部分。在语法层面他们有以下的区别: 1. struct中所有的成员是是public,也就是说你可以对一个struct对象的成员随意访问,而 class默认所有成员都是private的。 2.在C++中的你可以直接使用struct去定义一个变量,而不用像C中那样先要typedef二.在使用中的区别 class在C++中更多的是去作为一种用户自定义类型,而struct更多的是去做数据的聚合。你在解析一个协议的时候应该尽量使用struct,而定义一些像复数类一样的东西是应该尽量使用class 阅读全文
posted @ 2013-07-28 14:07 zkqian 阅读(186) 评论(0) 推荐(0) 编辑

Effective C++学习之--------尽量少做转型动作

摘要: 正如C++之父所说,在C++中应该尽量少做类型转换,太多的类型转换是一种设计不合格的表现。下面就一起来学习一下Effective C++中对这一条的总结吧,我觉得首先需要C++里面的几种类型转换稍作说明: const_cast:和CV限定相关,在实际代码中很少看到使用const_cast的,如果你真的希望在const 函数中改变某个成员变量的话可以将他定义为mutable。恩,还有非cosnt 装换为cosnt 呢?我是没遇到过。 dynamic_cast:当你希望做该种类型转换时可能希望是在一个derived class上执行derived class的方法,但你只有一个指向base c.. 阅读全文
posted @ 2013-05-31 21:21 zkqian 阅读(812) 评论(0) 推荐(0) 编辑

Effective C++ 学习之----------------------尽可能延后变量定义式的出现时间

摘要: 这一条相对来说比较简单,一句话说来就是在你使用变量是才去定义他。在这一点上书上讲了一个避免对象无用构造的方法,const string PASSWDTOOSHORT = "";const int MiniPWLegth = 5;string encryptPasswd(const string& passwd){ string encrypted; if (passwd.length() < MiniPWLegth) { return PASSWDTOOSHORT; }// .....//进行加密处理 return encrypted;}上述代... 阅读全文
posted @ 2013-05-22 22:59 zkqian 阅读(114) 评论(0) 推荐(0) 编辑

Effective C++学习之--------考虑写一个不抛异常的swap函数

摘要: 在这一节里,首先给出了一个很大众版的swap函数:namespace std { template<typename T> void swap(T& a, T& b) { T temp(a); a = b; b = temp; }}然后在为了效率的考虑而引出了一种叫做pimpl的手法。其实在<C程序设计语言>5.6节讲指针数组时就提高了一种类似的方法,不过其中讲的是关于交换字符串指针的。恩,从而有了以一下的代码:class Widget {public: Widget(const Widget& rhs); Widg... 阅读全文
posted @ 2013-05-21 22:55 zkqian 阅读(343) 评论(0) 推荐(0) 编辑

Effective C++学习之-------若所有参数皆需类型转换,请为此采用non-member函数

摘要: 假如我们有以下的有理数类:class Rational {public: Rational(int numerator = 0, int denominator = 1); int getnumerator() const; int getdenominator() const;private: int numerator; int denominator;};在条款19中提到过设计class犹如设计type,也就是说我们的Rational类应该提供类似int类型的功能,因此我们必须添加一些运算符重载函数,标准的教科书函数是这样的,你将自己的重载函数声明为了一个类... 阅读全文
posted @ 2013-05-20 07:33 zkqian 阅读(989) 评论(2) 推荐(0) 编辑