
C++
zqxN
这个作者很懒,什么都没留下…
展开
-
C++多重继承之成员变量的偏移量
在C++中,对类的成员变量取地址将得到该原创 2014-11-11 10:24:37 · 1396 阅读 · 0 评论 -
C++: delete与内存泄露
在C++中可以方便地通过运算符new和delete来动态分配内存,其中new的默认语义是分配内存并调用构造函数,而delete的默认语义是调用析构函数并释放内存,需要注意的是这两个运算符都和指针打交道,而涉及到指针事情就有点复杂了原创 2014-11-26 22:20:10 · 1054 阅读 · 0 评论 -
二维数组:内存布局与指针
这篇文章主要是就二维数组的内存布局,以及在使用中与指针的关系,举了一些小例子用以解释说明原创 2014-10-29 21:01:14 · 2376 阅读 · 1 评论 -
C++模板:名称查找
在编译模板的时候,编译器会分两个阶段去解析遇到的名称,第一个阶段解析不依赖于模板参数的名称,第二个阶段解析依赖于模板参数的名称,下面举个简单的例子来说明这一点原创 2014-11-23 20:37:50 · 926 阅读 · 0 评论 -
设计模式:工厂模式(续:虚构造函数和抽象工厂)
在之前的《设计模式:工厂模式》中记录了两种用于创建派生类对象的工厂模式,第一种模式直接使用基类的静态成员函数来创建派生类的对象,在该静态成员函数中直接调用了派生类的构造函数,第二种模式是使用基类工厂的静态成员函数,通过基类工厂中保存的各派生类工厂来创建派生类对象,派生类工厂是派生类的嵌套类,相当于为派生类量身定做的专属工厂,这些专属工厂的存在使得基类工厂不必了解创建派生类对象的细节。今天主要记录另外两种工厂模式:虚构造函数和抽象工厂。虚构造函数模式与前两种工厂模式不同,在前两种工厂模式中,基类是基类,派生类原创 2014-11-30 20:19:20 · 1085 阅读 · 0 评论 -
设计模式:工厂模式
工厂模式的意图是将生成对象的代码集中到一个地方,以方便统一管理,最简单的工厂模式是由基类负责生成各种派生类的对象,负责点儿的有多态工厂、抽象工厂等原创 2014-11-29 22:33:27 · 528 阅读 · 0 评论 -
设计模式:构建器模式(Builder)
构建器模式有点类似于之前的抽象工厂模式,但比抽象工厂模式更强大,构建器模式可以看做由两部分组成,一是builder,二是director,builder的基本思想就是抽象工厂,而director的存在使得对builder的使用更加灵活原创 2014-12-01 10:34:13 · 780 阅读 · 0 评论 -
C++名称查找与ADL
编译器的一个重要工作是解析它所遇到的名称,一般而言,编译器是按顺序解析所遇到的名称的,比如说,编译器遇到一个函数,那么就会为这个函数生成代码,但是如果这个函数调用了另外一个的函数,而这个函数还没有被解析过,那么编译器就会报错原创 2014-11-24 22:39:48 · 1970 阅读 · 0 评论 -
C++:istreambuf_iterator与istream_iterator的区别
在C++中,流(stream)也可以看做是容器,因而也有相应的iterator来遍历流中的内容,其中就有本文要介绍的两个流迭代器:istreambuf_iterator和istream_iterator,这两个迭代器的用法和区别可以用一下两段代码来体现原创 2014-11-25 23:17:48 · 4457 阅读 · 0 评论 -
设计模式:观察者模式
观察者模式有点像事件触发机制,也是一种回调机制,在观察者模式中,有观察者和被观察者,当被观察者有什么动静的时候,就可以以某种方式通知观察者做出某些动作原创 2014-12-01 20:01:10 · 481 阅读 · 0 评论 -
设计模式:多重派遣
在面向对象程序设计中,非常常用的手法就是用基类的指针指向派生类,然后在执行期通过虚函数机制找到派生类中的函数,假设这样一种情况,全局函数有两个输入参数,分别是两个基类指针 A* ap 和 B* bp,那么如何既找到ap指向的准确对象,又找到bp指向的准确对象呢?答案就是多重派遣,既先找到ap(bp)指向的准确对象,再去寻找bp(ap)指向的准确对象原创 2014-12-04 13:46:45 · 1001 阅读 · 0 评论 -
八大算法一一道来
八大排序算法原创 2015-09-05 22:14:57 · 1924 阅读 · 0 评论 -
C++模板:实参演绎
在使用C++模板函数时,通过原创 2014-11-23 15:47:46 · 1043 阅读 · 0 评论 -
C++模板:辨别函数类型
在《C++ Template》中有一个辨识函数类型的模板技术原创 2014-11-22 12:48:33 · 2091 阅读 · 1 评论 -
C++:vector的内部行为
C++中的vector是一个非常灵活的数组,它可以自动扩充大小来容纳新的元素,也可以快速地索引存储的元素,然而,这种使用上的便捷也是有代价的,因为vector的底层数据结构确实是一个数组,只是封装了一些便利的操作,像push_back()、reserve()等,下面我们就通过例子来看一下这些简便操作背后的行为原创 2014-11-27 16:28:34 · 793 阅读 · 0 评论 -
C++ Traps之名称绑定
C++中常常会包含很多头文件,我们并不能详细地了解这些头文件中都有些什么原创 2014-11-05 18:07:59 · 705 阅读 · 0 评论 -
C++ Traps之默认构造函数
首先申明的一点是:默认构造函数既可以是编译器自己合成的原创 2014-11-10 09:48:29 · 656 阅读 · 0 评论 -
刨根问底之C程序编译链接
之前对C程序的编译过程一直是一知半解似懂非懂原创 2014-11-13 15:38:55 · 635 阅读 · 0 评论 -
C++内存布局之虚拟继承
虚拟继承是个稍微有点复杂的机制,它的出现是为了防止在原创 2014-11-06 11:28:43 · 693 阅读 · 1 评论 -
C++之虚函数和多重继承
原文出处:点击打开链接翻译 2014-11-11 13:26:10 · 834 阅读 · 0 评论 -
C++ Template初探:以模板为参数的模板
以模板为参数的模板,故名原创 2014-11-14 14:23:16 · 2005 阅读 · 0 评论 -
C++ Template之编译时断言
今天看了《C++编程思想》关于编译时断言的一个例子,原创 2014-11-15 16:06:51 · 913 阅读 · 0 评论 -
C++类型转换与this指针调整
在派生类的对象中,基类是作为派生类的子对象存在的,称为基类子对象,当派生类只继承于一个基类时,基类子对象位于原创 2014-11-17 15:35:46 · 1688 阅读 · 0 评论 -
C++模板递归1
最近在《C++ Templates》中看到了很多模板递归的例子,模板原创 2014-11-17 22:53:08 · 892 阅读 · 1 评论 -
C++模板递归2
前面一篇文章里记录了模板递归的一个例子原创 2014-11-18 20:50:42 · 903 阅读 · 0 评论 -
skip list跳跃表实现
原文链接:http://www.ezlippi.com/blog/2014/12/skip-list.html跳表(skip List)是一种随机化的数据结构,基于并联的链表,实现简单,插入、删除、查找的复杂度均为O(logN)。跳表的具体定义,跳表是由William Pugh发明的,这位确实是个大牛,搞出一些很不错的东西。简单说来跳表也是链表的一种,只不过它在链表转载 2017-06-02 18:03:30 · 587 阅读 · 0 评论