c++
Roccosis
这个作者很懒,什么都没留下…
展开
-
Name Mangling in C++
摘要:详细介绍了C++中的Name Mangling的原理和gcc中对应的实现,通过程序代码和nm C++filt等工具来验证这些原理。对于详细了解程序的链接过程有一定的帮助。Name Mangling概述大型程序是通过多个模块构建而成,模块之间的关系由makefile来描述。对于由C++语言编制的大型程序而言,也是符合这个规则。程序的构建过程一般为:各个源文件分别编译,形成目标文件。转载 2017-02-05 17:08:52 · 319 阅读 · 0 评论 -
boolan——c++学习笔记之设计模式一
什么是设计模式“每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心。这样,你就能一次又一次地使用该方案而不必做重复劳动”。——Christopher Alexander软件设计复杂的根本原因变化客户需求的变化技术平台的变化开发团队的变化市场环境的变化。。。如何解决复杂性?分解抽象原创 2017-04-05 22:55:06 · 361 阅读 · 0 评论 -
boolan——c++学习笔记之设计模式二
对象创建模式一、工厂方法(Factory Method)二、抽象工厂(Abstract Factory)原创 2017-04-13 21:52:15 · 324 阅读 · 0 评论 -
boolan——c++学习笔记之STL哈希表探究
一、简介c++STL容器unordered_set、unordered_map、unordered_multiset、unordered_multimap内部是用哈希表实现的,以下将详细介绍c++STL哈希表的实现。二、哈希表排列结构1、哈希表buckets个数大于元素个数,当元素个数大于等于buckets个数时,哈希表将rebuild,扩大buckets个数,GNU C2.9原创 2017-03-15 22:08:14 · 402 阅读 · 0 评论 -
boolan——c++学习笔记之move
前言C++11提供了move语义,可以提高大大STL的效率。一、move对STL一些容器操作效率的提高下面几个图中分别对vector,deque,multiset进行拷贝构造和move构造的效率对比,可以看到move构造比拷贝构造快很多。二、一个拥有move特性的classMyString 类中有比不同string类多了一个move构造函原创 2017-03-30 21:59:35 · 827 阅读 · 0 评论 -
boolan——c++学习笔记之STL迭代器分类
前言c++ STL提供了多种迭代器种类,并且居然有继承关系,它用于告诉算法对于指定容器作指定的迭代器操作。一、cppreference中对Iterator category的描述二、迭代器支持的操作以及各容器所含迭代器种类1、各类迭代器支持的操作Input iterators : ==, !=, ++, *, ->原创 2017-03-23 13:06:45 · 341 阅读 · 0 评论 -
boolan——c++学习笔记之容器探索
一、各类容器创建空对象时所占内存二、迭代器迭代器是算法实现容器的一个桥梁,类似于一个指针,可对容器的元素作指针的操作,比如“++”,“--”,“*”,“->”等,每个容器都有实现自己的迭代器。三、迭代器的萃取机1、迭代器内部为关联类型之上加了一个中间层——iterator traits(迭代器萃取机),用以区分传入的是类的迭代器还是单纯的类型原创 2017-03-09 13:17:52 · 348 阅读 · 0 评论 -
boolan——c++学习笔记之容器
一、各容器内存存储结构二、各容器特征描述(1)array创建:固定长度;存储方式:连续存储数组;访问元素:可随机访问;增减元素:不支持;(2) vector创建:不定长度,单向增长;存储方式:连续存储数组,增加元素时内存动态增加大于元素大小;访问元素:可随机访问;原创 2017-03-02 14:24:43 · 457 阅读 · 0 评论 -
boolan——c++学习笔记之c++转换函数
1、conversion function(转换函数)条件: 有一个基本类型转换函数用途:把对象转成基本数据类型例子:class Fraction{public: explicit Fraction(int num, int den=1) : m_numerator(num), m_denominator(den) { cout operator doub原创 2017-02-21 20:31:31 · 302 阅读 · 0 评论 -
boolan——c++学习笔记之STL简介
一、STL简介(1)六大组件:(2)六大组件之间关系:分配器给容器分配内存;算法实现容器;由迭代器做为算法和容器的桥梁;仿函数为算法提供功能;适配器对容器、仿函数、迭代器做接口转换;(3)代码示例(包含六大组件)原创 2017-03-02 12:43:41 · 318 阅读 · 0 评论 -
boolan——c++学习笔记之pointer-like classes
1、pointer-like classes,智能指针例子:shared_ptr2、pointer-like classes,迭代器例子:iterator原创 2017-02-21 21:27:25 · 324 阅读 · 0 评论 -
boolan——c++学习笔记之内存分配
1、动态分配内存newnew过程按以下过程实现:2、动态内存释放deletedelete过程按以下过程实现:3、动态分配对象内存块以下内存块为VC 环境,红色区域表示cookie字节,用于计算内存总量用量;灰色区域表示debug字节;绿色区域表示数据;青色区域表示pad,附加字节,用于凑足16字节倍数;说明:一个矩形框4个原创 2017-01-21 21:20:13 · 335 阅读 · 0 评论 -
boolan——c++学习笔记之类关系
类的的三种关系:1)继承(inheritance)2)复合(composition)3)委托(delegation)1)继承(inheritance)1、继承关系表现2、继承关系的构造和析构2)复合(composition)1、复合关系表现及应用场景(adapter)2、复合的构造和析构3)委托(delegation)1、委托原创 2017-02-08 21:02:22 · 422 阅读 · 0 评论 -
boolan——c++学习笔记之多态对象模型
c++用虚函数、虚指针、虚表的手段来实现多态,其中虚函数需要程序员手动书写,虚指针和虚表由构造对象的时候在内存中生成。下图为对象多态模型:有A、B、C三个对象,关系为B继承A、C继承B,并且每个类中有虚函数和非虚函数。(1)生成对象时如果类中有虚函数,则会在内存中生成一个虚指针,指向一个虚函数表;(2)如果父类有虚函数,子类对象继承父类的虚指针,对象中虚指针原创 2017-02-16 17:36:06 · 282 阅读 · 0 评论 -
boolan——c++学习笔记1
1、头文件防御式定义;2、构造函数定义注意点,参数初始化默认值,初始化列表;3、函数参数尽量传引用、返回值返回引用需要视情况而定,如局部变量一般不返回引用;4、变量,函数内不改变成员变量,定义成const;5、友元函数,在类中把全局函数声明为友元,改全局函数可以直接访问类成员;友元函数在类中声明只是定义访问权限,需要在类外面再次声明;6、短小、快速执行的函数尽量定义为inlin原创 2017-01-16 21:59:02 · 251 阅读 · 0 评论 -
boolan——c++学习笔记之设计模式三
c++设计模式总结一、设计模式的设计目标二、面向对象的手段三、八大设计原则设计模式基本上都是依据八大原则设计的。四、重构技法设计模式时的一些常用技法。五、模式分类红色圈内的几个模式现在在c++设计中已经不常用,有些由于现在c++已经有更好的方式解决问题,有些使用比较局限。六、c++对象模型所有设原创 2017-04-18 22:43:15 · 320 阅读 · 0 评论