摘要: 通过上一节的例子,在反射里加入数据成员,属性等,实现更加复杂的对象。 1.实现 2.使用 3.结果 阅读全文
posted @ 2016-07-07 23:45 goooon 阅读(145) 评论(0) 推荐(0) 编辑
摘要: C++不像C#,java那样天生编译过程实现反射功能,只能在代码层面注册来实现。比如QT,UE等,为了实现反射功能,提供了特殊的宏定义,并且使用工具将宏生成相应的C++代码实现反射功能的。 1.定义 2.使用 3.结果 getIntValue 2 这里实现的反射功能还是很简单,没有对输入参数,输出参 阅读全文
posted @ 2016-07-07 18:39 goooon 阅读(183) 评论(0) 推荐(0) 编辑
摘要: 1.定义 结合前面的内容,可以定义如下的基类 定义继承类型 2.使用 3.结果 阅读全文
posted @ 2016-07-06 22:59 goooon 阅读(172) 评论(0) 推荐(0) 编辑
摘要: Type Traits, 类型萃取,这个概念涉及到的内容太多。基本常用的萃取方法可以参考 http://en.cppreference.com/w/cpp/types 这里主要记录一下对函数的萃取技巧. 上面只是对函数做了简单的包装,并且forward参数调用。 如果需要更精确的参数控制,则可以如下 阅读全文
posted @ 2016-07-06 22:13 goooon 阅读(221) 评论(0) 推荐(0) 编辑
摘要: RTTI(Run-Time Type Identification),通过运行时类型信息程序能够使用基类的指针或引用来检查这些指针或引用所指的对象的实际派生类型。 C++ 里通过虚函数增加额外信息的方法实现了RTTI。GCC和VS的实现也大同小异,并且都有专门的设置来开关来禁止或使用RTTI。 和R 阅读全文
posted @ 2016-07-06 13:32 goooon 阅读(322) 评论(0) 推荐(0) 编辑
摘要: 在内存管理中,经常需要自定义内存分配释放,也就是需要定义new 和 delete. 通常为了有针对性的对某些对象的内存分配进行管理,定义一个内存管理基类 1.定义 2.使用 1 class MemObject : public Memory { }; 3.调用 通过该方式,实现内存的自我管理和监控。 阅读全文
posted @ 2016-07-06 11:21 goooon 阅读(227) 评论(0) 推荐(0) 编辑
摘要: SFINAE:即Substitution Failure Is Not an Error!可以理解为匹配失败不是错误,更严格的说应该是参数匹配失败不是一个编译时错误。 C++函数匹配的顺序遵循的原则是按照以下顺序 1.寻找参数的完美匹配函数,找到则使用 2.寻找模板函数,若实例化后的函数能够匹配则使 阅读全文
posted @ 2016-07-05 17:06 goooon 阅读(861) 评论(0) 推荐(0) 编辑
摘要: 1. 当一个文件里面代码过多时,往往需要将代码分组,C#里面有#pragma region的控制字,而C++里面缺少这个,可以使用下面这个来替代。 2.预处理时计算数组大小 3.属性 使用时就可以像C#一样了 阅读全文
posted @ 2016-07-05 16:04 goooon 阅读(142) 评论(0) 推荐(0) 编辑
摘要: 随着C++ 11的语法越来越复杂,功能也越来越强。用泛型+返回类型推导的方法来实现常量字符串的处理,能实现宏实现不了的地方,并且在编译期实现 SO上的牛人太多了,以下是出处 http://stackoverflow.com/questions/15858141/conveniently-declar 阅读全文
posted @ 2016-07-05 15:38 goooon 阅读(1544) 评论(0) 推荐(0) 编辑
摘要: 有了上一篇的str2type,类似的可以定义numb2string 1.定义 2.实现 3.使用 1 std::cout << blog_numb2str(12345678) << std::endl; 4.结果 12345678 5.优缺点 阅读全文
posted @ 2016-07-05 15:18 goooon 阅读(211) 评论(0) 推荐(0) 编辑