C++
文章平均质量分 67
雪人2015
知其然并知其所以然
展开
-
SmartPointer
很久没有写博客了,很多工作中的总结都写在了自己的记事本里,比较杂,也没反映到博客上。刚去引擎组但却由于总公司的决策原因,引擎组当建立3个月就被撤销了,我也就没能继续做引擎了。部门被撤,当前也没任务,这些天就闲着看书。公司最近准备开IOS项目,我也经过很多思想上的挣扎,终于决定接受转向IOS等移动方向。原因是虽然自己喜欢编程,喜欢做3d引擎,但是机会可遇不可求。能做3d引擎固然好,但是我当前还是原创 2012-10-26 15:12:00 · 916 阅读 · 0 评论 -
好玩,诡异,代码大全
通过学习《Inside the C++ Object Model》发现了一些好玩的代码,记录在此吧,以方便搜集以后发现的好玩,或者归你的代码。类对象能展现多态吗? struct Base { int j; virtual void f() { std::cout << "Base::f()" <<原创 2013-01-08 15:01:29 · 11281 阅读 · 0 评论 -
boost库学习总结
第一次使用boost库是因为网络编程,由于时间比较紧,没有时间每个库都学,所以前期想找个专门的boost库网络教程(以前自己就用过socket写过,但是为了跨平台,而且boost库这么好,还是趁早学吧)。终于在网上找到一个很好的boost库教程系列。http://www.gamedev.net/blog/950/entry-2249317-a-guide-to-getting-started-wi原创 2013-03-08 20:20:36 · 43580 阅读 · 1 评论 -
ofstream和wofstream与中文输出问题
转载文章地址:http://hi.baidu.com/vfishg/item/81ddb9271835fbf951fd8765使用C++标准库的iostream,可以方便地将控制台、文件、字符串以及其它可扩充的外部表示作为流来处理,但要处理中文,却会碰到很多问题。 本人原来没怎么用过这个iostream,这几天尝试用这个写点东西,一会儿不能输出中文,一会儿不支持中文文件名的,搞得头大。网上转载 2013-06-14 14:07:17 · 7797 阅读 · 0 评论 -
编译基本原理
记得大学刚学编程的时候,用C编写代码,语法学会了。程序也编起来,跑起来了。也没曾想过我的程序为什么能跑起来,也不曾知道有编译和链接两个过程等等,只知道我按语法来,我的程序就能正常跑,如果不是预期的结果,通过查看分析代码,慢慢找到Bug根源。直到Windows平台编写代码,原创 2013-10-12 16:01:35 · 5825 阅读 · 0 评论 -
wofstream,wcout无法输出unicode的真相
之前我转载过一篇ofstream和wofstream与中文输出问题,让我初步知道如何解决这类问题。第一次我没有在意,按照文章中做的方法去做,然后程序就运行正常了。我试图去记住这些规则,但是我后来发现,太难了。以至于我在最近一次使用到 std::wofstream 类的时候,发现我无法往其中输入unicode字符。让我找了几个小时的bug,于是我今天就花了两个小时,在网上搜索资料,以及自己写一些测试原创 2014-01-04 16:50:06 · 14617 阅读 · 2 评论 -
C++中的零散重要知识点
(一):类相关static 在类中的关键是用在类中的静态变量除了整型,枚举类型(枚举也是以整型存储的)的const类型可以在类中初始化。其他的都不能在类中初始化。(注意还必须是const类型才能)如果不是整型或枚举的const类型,那么都要在类外初始化。如:class A{ static int a;};int A::a=1;其中类的静态成员初始化不受访原创 2011-02-11 18:27:00 · 2373 阅读 · 4 评论 -
fstream,FILE之间的选择
作为一个C++的拥护者,我jin原创 2014-08-20 17:56:35 · 9030 阅读 · 0 评论 -
完成端口(CompletionPort)详解 - 手把手教你玩转网络编程系列之三
手把手叫你玩转网络编程系列之三 完成端口(Completion Port)详解 ----- By PiggyXP(小猪)前 言 本系列里完成端口的代码在两年前就已经写好了,但是由于许久没有写东西了,不知该如何提笔,所以这篇文档总是在酝酿之中……酝酿了两年之后,终转载 2014-11-14 11:13:18 · 8012 阅读 · 0 评论 -
虚函数重要性质总结
我们经常用虚函数完成运行时的类函数多态行为。这是很基本的了。 但是我们想这样一个问题?如果我们想我们的类层次结构实现一个函数多态,那么我们就会想着为我们类层次结构中的基类添加虚函数,然后派生类依次重写。但是不是只有直接调用虚函数才能实现多态行为呢? 别忘了,我们函数之间是可以相互调用的,你也看到我说的是直接。所以,我们可以通过基类一个普通函数,让此普通函数调用虚函数,实现派原创 2011-02-12 19:33:00 · 1245 阅读 · 0 评论 -
Memory Layout for Multiple and Virtual Inheritance (By Edsko de Vries, January 2006)
原文地址:http://www.phpcompiler.org/articles/virtualinheritance.htmlIn this article we explain the object layout implemented by gcc for multiple and virtual inheritance. Although in an ideal world C转载 2013-01-04 20:58:55 · 1075 阅读 · 0 评论 -
c++ 由类型转换引起的指针偏移
由于转载了另外的转载,且原文暂时未找到,此处无法列出原文地址。在C语言中,如果对一个指针做类型转换,不会改变这个指针的值,改变的只是对指针的解释方式。但是在C++中,由于一些特性的引入,在对指针做类型转换时,编译器有时不得不对指针做一个偏移,以支持这些特性。下面将具体讨论这些情况。1. 由虚函数引起的指针偏移通常在有虚函数的类中,编译器会安插一个vptr,但是对vptr的位置C转载 2013-01-04 20:01:26 · 2988 阅读 · 0 评论 -
c++ new操作符的重载
感谢原文作者,为我揭开C++又一个盲点。原文地址:http://blog.csdn.net/bichenggui/article/details/4823978关于c++ new操作符的重载你知道c++ 的new操作符和operator new的区别么?也许你还会问,他们有区别吗? 当你写下面这样的代码时,string *pa = new string("mem转载 2012-09-27 15:41:19 · 750 阅读 · 0 评论 -
typedef的用法小总结
首先是typedef历史遗留问题,经常看到很多人写结构体就写:typedef struct _A{int a;int b;}A; A b;我就一直很纳闷,为什么不直接写_A b呢?昨天查资料才知道,原来这个是因为c语言遗留下来的,在C语言中,结构体对象声明必须加关键字struct,所以按C语言语法是:struct _A b;大家都知道程序员很讲究效率,编代码也是,能少些一原创 2011-02-11 11:22:00 · 1158 阅读 · 1 评论 -
内存对齐用法小结
今天偶然在贴吧里面看到有人问struct A{ char a; double b;}; 使用C++的sizeof(A);结果为:16。 已经周折才把这个搞明白了。 下面我来说一下,看你能看的懂吗: 从大的方面来讲,今天我们说的这个内存边界对准,其实是为了提高内存访问速率,同时也提高了程序的可移植性。我主要说明提高内存访问速率。原创 2011-02-14 14:48:00 · 1119 阅读 · 0 评论 -
类成员函数指针区别于用法
通常的函数指针大家已经非常熟悉了。但我们今天讨论一下类成员函数指针的用法。今天我们来看一下成员函数指针,加入我们想要声明一个 void CTest::Show()成员函数指针类型,那么我们一般的做法是:typedef void(CTest::*pShow)();从上面可以看出一些和一般函数指针类型不同的地方。让我们把他和一般的函数声明比较一下。下面是一般的函数声明:typedef原创 2011-02-16 23:22:00 · 1747 阅读 · 0 评论 -
C++输入输出零散点
C++中文件打开模式一个需要注意的模式:ios_base::ate:此模式在C++中,单独使用或者配合std::ios_base::out会截断文本。但如果配合std::ios_base::in|std::ios_base::out则是追加到末尾。不会出现第一个字节在末尾,然后其他的从头开始覆盖。 C++中c语言的标准输出printf:printf("%02x",12);%x是原创 2011-02-15 23:04:00 · 1132 阅读 · 0 评论 -
#define用法总结
刚开始接触VC++的同学们,估计对这个东西有这莫大的恐惧。这个经常写在添加头文件的地方的奇怪语句。如果看过mfc那么,那么拿出一些application framework里面的宏,估计会吓死一片。说了这么多只是想说,不明白其用法的人很害怕,但要是知道它,熟悉它,那么你会觉得它很美妙。 进入正题:#define的个用法: 1:#define MAX 0x18第一个用法原创 2011-02-15 20:02:00 · 10381 阅读 · 2 评论 -
calloc与malloc的区别
都是动态分配内存。Both the malloc() and the calloc() s are used to allocate dynamic memory. Each operates slightly different from the other. malloc() takes a size and returns a pointer to a chunk of memory转载 2012-12-19 10:33:00 · 1010 阅读 · 0 评论 -
#define简单妙用
1:__FILE__,__LINE__,宏展开,中间层宏__FILE__是编译器预定义宏,表示此文件的绝对路径,但是ASCII字符。假如你想将__FILE__转换成宽字符。或许你想这样 #define __WFILE__ L##__FILE__wchar_t pszFilePath[]=__WFILE__; 这样的话编译器会提示说,“L__FILE__”: 未声明原创 2011-04-17 00:46:00 · 1520 阅读 · 0 评论 -
libevent IOCP完整教程
将尽量讲解如何使用 libevent 2.1.4-alpha IOCP(2.0.21 版也试过,不过2.1.4修改了部分之前版本的IOCP bug,所以使用IOCP的话,个人感觉2.1.4比较适合),并将 Programming with Libevent 没有讲解到的有关 IOCP 的部分加以补充,指导你正确使用 libevent IOCP。原创 2014-11-10 19:25:24 · 14324 阅读 · 1 评论