
C++
文章平均质量分 65
苦味代码
公众号:苦味代码
展开
-
std::bind()详解
在《C++ Primer》中关于std::bind()的用法主要是调整函数的参数个数以及参数顺序, 本文展示了std::bind()如何绑定类的成员。根据cppreference的描述, std::bind()可绑定的对象有: Callable object (function object, pointer to function, reference to function, poin原创 2018-01-06 16:13:03 · 5246 阅读 · 0 评论 -
C++中的类型转换细节
我们在C++常用四种类型转换: static_cast, const_cast,reinterpret_cast,以及dynamic_cast。其中static_cast转换如果出错, 则发生在编译时, 其他三种类型转换需要谨慎, 使用了他们代表着程序员事先清楚运行时不会出现错误。 static_cast主要用于下面三种情况: 1. void指针转换为目标指针或者相反 2. 改变通常的标原创 2018-01-05 18:20:56 · 332 阅读 · 0 评论 -
function适配可调用对象的陷阱
function对象是一个很适用的适配器, 只要函数的调用类型相同就可以用同一个function对象表示,堪称万金油, 但需要注意的是有时候参数的const属性会影响function对象的表现, 比如有下面的例子: void foo(const int *p) { cout "const" << endl; } void bar(int *p) { cout "nomal"原创 2018-01-07 19:58:38 · 324 阅读 · 0 评论 -
C++对象在64位机器上的内存布局
前两天读了陈皓两篇关于虚函数表的博客, 正如他在博客中说的那样, 由于年代久远, 所有的测试代码都是在32位机上跑的, 按照作者的思路, 针对64位机, 我仿写了那些代码, 在移植到64位的过程中碰到了一些坑, 也学到了一些小工具, 现在记录在这里。 1. 如何在GCC环境下得到类在内存中的布局: 只要我们在编译的时候加上-fdump-class-hierarchy选项, 就可以在源文件件的同原创 2018-01-10 15:47:36 · 796 阅读 · 0 评论 -
C++中特殊的临时变量
C++中特殊的临时变量 C++中产生的临时变量主要产生于计算表达式中间, 函数传参或者返回时候的类型转换中间, 旧一点的书上说在C++中产生的临时变量默认的是const的, 很容易让人产生混乱。先说结论, C++中间的临时变量并不是const的,之所以大家有这样的困惑大概是经常能碰到下面的这段代码: void f(int &x){} void g(const int &x){}...原创 2018-03-23 21:58:13 · 586 阅读 · 0 评论 -
C++中的单例模式
单线程版本 template&amp;amp;lt;typename T&amp;amp;gt; class Singleton { public: T &amp;amp;amp;getInstance() { if (value_ == nullptr) {//判断语句 vaule_ = new T(); } return *value_; } pr...原创 2018-06-11 10:40:12 · 279 阅读 · 0 评论