八叶一刀·无仞剑

万物流转,无中生有,有归于无

导航

上一页 1 ··· 5 6 7 8 9 10 11 12 下一页

2017年3月9日

摘要: 前言 今年中下旬就要找工作了,我计划从现在就开始准备一些面试中会问到的基础知识,包括C++、操作系统、计算机网络、算法和数据结构等。C++就先从这本《深度探索C++对象模型》开始。不同于《Effective C++》,这本书主要着眼于C++实现的底层机制,因此我在写这个系列时默认读者已经熟悉C++的 阅读全文

posted @ 2017-03-09 20:55 闪之剑圣 阅读(2837) 评论(0) 推荐(0) 编辑

2016年12月29日

摘要: C++中,表达“is implemented in terms of(根据某物实现出)”关系有两种方法:复合与private继承。 复合很好理解,就是在类中包含另一个类对象,这在面向对象设计中是常用的方法。 与public继承不同,private继承不代表基类和子类之间的“is-a”关系,它往往意味 阅读全文

posted @ 2016-12-29 14:39 闪之剑圣 阅读(148) 评论(0) 推荐(0) 编辑

2016年12月25日

摘要: 在C++中,有四种选择可以替代virtual函数的功能: 1.non-virtual interface(NVI)手法,这是一种template method模式。它以public non-virtual成员函数包含较低访问性的virtual函数。对于子类而言,子类只需重定义私有的virtual函数 阅读全文

posted @ 2016-12-25 19:44 闪之剑圣 阅读(118) 评论(0) 推荐(0) 编辑

2016年12月9日

摘要: 在C++中,有时会遇到定义参数数量不确定的函数的情况。此时如果我们确定参数的类型是相同而个数不确定的话,可以用initializer_list来解决。 这是C++11里新加入的功能。initializer_list是一个模板类,它的使用有一点像vector,但是每一个元素都是常量,而且不能通过ope 阅读全文

posted @ 2016-12-09 16:17 闪之剑圣 阅读(161) 评论(0) 推荐(0) 编辑

2016年12月1日

摘要: 模板是C++中非常重要的组成部分,之前自己对这块领域一直不太熟悉。最近趁着有时间学习了一下,特此总结。 首先是函数模板,它的定义方式如例子所示: 类也有自己的模板,称为类模板,如下所示: 要特别注意的是,C++中类模板的声明和定义应当放到同一个.h文件下,不能将声明和定义分散在不同的文件中。 类模板 阅读全文

posted @ 2016-12-01 20:43 闪之剑圣 阅读(1669) 评论(0) 推荐(0) 编辑

2016年11月27日

摘要: C++的inline函数就是编译器在编译代码时,将“对此函数的每一个调用”都以函数本体替换之,该过程发生在编译期间。 inline函数的优点是,它可以省去函数调用所带来的额外开销,提高程序的速度。缺点也很明显:首先,过分使用inline函数会导致代码膨胀,占用过多内存和硬盘空间;其次,在升级inli 阅读全文

posted @ 2016-11-27 10:15 闪之剑圣 阅读(253) 评论(1) 推荐(0) 编辑

2016年10月15日

摘要: C++ STL中常用的关联容器有std::set、std::map等,这些关联容器具有容器内部元素自动排序的能力。 需要了解的是,在容器内部,对元素进行排序根据的是“等价”关系而不是“相等”关系,更确切的说,是元素所属类型的“<”运算符而不是“==”运算符决定了容器内部的排序行为。 以set为例,当 阅读全文

posted @ 2016-10-15 14:57 闪之剑圣 阅读(264) 评论(0) 推荐(0) 编辑

2016年10月10日

摘要: 假设我们预先为容器添加了一部分元素,接着用clear将它们删除,容器内部分配的存储空间实际上不会减小,改变的只是能够访问的元素个数。如下所示: 此时控制台会输出1066,很明显之前的存储空间没有变化。 如果我们想要删除不必要的存储空间,可以利用swap函数: 系统首先生成一个内容与vec一样,而存储 阅读全文

posted @ 2016-10-10 10:21 闪之剑圣 阅读(274) 评论(0) 推荐(0) 编辑

2016年10月4日

摘要: 假设我们想声明一个STL的vector类型的变量,读入文件里的信息: 之后我们引用data的元素时,会发现编译器报错。为什么呢,让我们来分析一下: 在此时的编译器看来,我们实际上声明的是一个函数,它的返回值是vector,参数有两个,第一个参数为一个istream_iterator对象,第二个参数为 阅读全文

posted @ 2016-10-04 10:21 闪之剑圣 阅读(262) 评论(0) 推荐(0) 编辑

2016年7月19日

摘要: C++的函数中,如果返回值是一个对象,那么理论上它不可避免的会调用对象的构造函数和析构函数,从而导致一定的效率损耗。如下函数所示: 在test函数里,生成了一个A的临时对象,之后将它作为返回值返回,在生成a的过程中会调用constructor,离开函数的时候会调用该临时对象的destructor。 阅读全文

posted @ 2016-07-19 11:35 闪之剑圣 阅读(764) 评论(0) 推荐(0) 编辑

上一页 1 ··· 5 6 7 8 9 10 11 12 下一页