C++
文章平均质量分 90
子程子
这个作者很懒,什么都没留下…
展开
-
用typelist实现RUNTIMECLASS机制
一.RUNTIMECLASS机制RUNTIMECLASS机制无非可以有两点好处:一个是根据对象名创建一个对象,CObject* PASCAL CreateObject(LPCSTR lpszClassName);一个是动态判断型别。BOOL IsKindOf(const CRuntimeClass* pClass) const;特别是第二点,给编程带来很大的灵活性,程序员可以在向父类的指针集合中,找出感兴趣的子类的指针,然后进行向下类型转换处理。for(vector::iterator it = vPtr原创 2010-12-28 16:07:00 · 932 阅读 · 0 评论 -
学习BOOST的文件迭代
boost的源码有许多让奇技淫巧,文件迭代也不例外。这又算作一巧吧。boost使用手册告诉我下面三行代码可以将try.h头文件包含5次。#define BOOST_PP_ITERATION_LIMITS (5, 10)#define BOOST_PP_FILENAME_1 "try.h"??=include BOOST_PP_ITERATE()(其中??=与#等价)前两个宏都是我自己定义的,只有BOOST_PP_ITERATE是boost定义的。因此,所有的秘密都在这个宏定义中。我把BOOST_PP_ITE原创 2010-12-28 17:51:00 · 1454 阅读 · 0 评论 -
学习load acquire 和store release
在学习BOOST多线程库的原码时,顺便看了一下它的互斥量basic_timed_mutex的实现方式。它和WINDOWS自身的CriticalSection很相似,唯一不同的就是basic_timed_mutex有等待时间的功能。http://blogs.msdn.com/b/kangsu/archive/2007/07/16/volatile-acquire-release-memory-fences-and-vc2005.aspxhttp://www.cnblogs.com/lxconan/archiv原创 2011-01-09 21:42:00 · 6883 阅读 · 1 评论 -
简单的反射机制
<br />Refl.h<br />#pragma once#include "rtti.h"#include <string>#include <map>#include <stdio.h>#include <stdarg.h>using namespace std;template<typename T>struct STypeSizeWrapper{ enum { typesize = sizeof(T), }原创 2011-03-04 09:33:00 · 779 阅读 · 0 评论 -
C++内存布局生成步骤
对C++内存布局有过一定了解,但是一直都很暧昧。为了搞清楚,决定探究一下C++内存布局。本文在VC2008下实验,有兴趣的同学可以在G++实验下经过仔细研究。现在总结出来3条规则:规则1.一个没有继承的C++对象的布局总是(虚表指针 + 成员变量),虚表指针至少为4字节,如果你的成员有double的话,由于内存对齐的原因,虚表指针为8字节。如果没有虚函数,那么虚表指针可以省去。原创 2012-04-15 12:19:31 · 1662 阅读 · 3 评论 -
高效C++委托的原理
写这篇学习心得源自于一篇老外的文章Member Function Pointers and the Fastest Possible C++ Delegates,网上也有它对应的中文翻译,我随意找一篇:http://www.cnblogs.com/jans2002/archive/2006/10/13/528160.html。文章中提到了高效C++委托,不过讲得太生涩了,以至于第一次看,没怎么原创 2012-05-15 10:32:57 · 5296 阅读 · 1 评论 -
C++ 模板应用浅析
模板的四大场景1.数据类型与算法相分离的泛型编程2.类型适配Traits3.函数转发4.元编程原创 2014-07-19 14:03:47 · 4208 阅读 · 6 评论