Boolan c++笔记
李白-2017
今天经历的所有惊心动魄,都不过是明天的过眼云烟。
展开
-
Boolan c++笔记_1
1. class有两种不含有指针含有指针2. 基于对象 与 面向对象3. c++语言 与 c++标准库4. 头文件的布局#ifndef __COMPLEX__ (防止重复声明)#define __COMPLEX__0.前置声明(声明后面要用到的类和全局函数)1.类声明(class head, class body)2.class body外面定义成员函数,全局函数#end原创 2017-10-05 00:04:23 · 174 阅读 · 0 评论 -
Boolan 设计模式_2
主要内容:本节主要讲对象创建和接口隔离各四种设计模式。1. 对象创建模式1.1 工厂模式ISplitter *splitter = new BinarySplitter(); 这样写是编译时的依赖具体类,违反依赖倒置原则。MainForm只依赖于抽象的ISplitter和SplitterFactory,并不依赖于具体类。利用工厂方法创建具体的Splitter,延迟对象创建。1.2 抽象工原创 2017-10-05 00:04:56 · 128 阅读 · 0 评论 -
Boolan 设计模式_1
主要内容:本讲主要讲解面向对象设计的八大原则,和其中五个设计模式。1. 综述目标:可复用(编译单位级别的复用,不是源代码的拷贝粘贴)方法:面向对象解决复杂问题方法:分解和抽象。面向对象:适应变化、各负其责。2. 面向对象设计八大原则还是画图理解起来更容易些。。。面向对象设计八大原则【接口标准化】分析问题,有时候应该跳出软件,结合人类发展历史。。。秦始皇统一六国。雕版印刷(紧耦合)原创 2017-10-05 00:04:54 · 191 阅读 · 0 评论 -
Boolan C++ STL与泛型编程_5
主要内容:标准库中除STL之外的内容。1. 一个万用的hash functionhash function设计原则:产生的hash code尽可能减少冲突, 使元素能够尽可能多的落在不同的篮子里。unordered_set两种使用方法:一种是针对需要存放的元素类型,定义泛函数。另一种是定义一个hash_function。设计hash function:hash function原创 2017-10-05 00:04:51 · 179 阅读 · 0 评论 -
Boolan C++ STL与泛型编程_4
主要内容:本节主要讲解STL六大部件中剩下的4大部件,包括算法、迭代器、泛函数和适配器。分类器和容器在前两节已经讲解。算法与其他STL部件的区别之一在于算法是函数模板,其他的是类模板。这几大部件也是相互联系的。算法虽然对容器一无所知,但是它通过问答迭代器,通过迭代器实现了对容器的操作。当迭代器无法回答迭代器的问题时,编译就会报错。算法也是泛函数的应用场合之一。适配器则是在容器、迭代器、泛函数的基原创 2017-10-05 00:04:48 · 154 阅读 · 0 评论 -
Boolan C++ STL与泛型编程_3
主要内容:本节深入剖析了各种常用容器和容器适配器的底层支撑,容器主要分为三大类,顺序容器、关联容器、无序容器。其中主要介绍了顺序容器中deque的内部实现,以及默认deque作为底层支撑的两个容器适配器stack和queue。并且对红黑树进行了深入探索,以及由它实现的set、multiset、map、multimap。还有对hash table进行了详细分析,由它实现了unordered容器。原创 2017-10-05 00:04:45 · 192 阅读 · 0 评论 -
Boolan C++ STL与泛型编程_2
主要内容:本节主要讲解了面向对象和泛型编程的区别,以及source code所涉及到的基础知识(包括运算符重载、各种模板等),还有利用源码深入剖析了分配器、容器(list, vector, array, forward_list等)、迭代器。源码之前,了无密码。1.源码所在目录visual c++源代码文件:..\include 下面有这个c++标准库的头文件(自己的环境vs 2017,原创 2017-10-05 00:04:43 · 171 阅读 · 0 评论 -
Boolan C++ STL与泛型编程_1
c++标准库--体系结构与内核分析主要内容:本节主要对c++标准库学习的4个阶段,c++标准库和新旧式C的头文件,以及stl进行讲解。stl是泛型编程最成功的作品。stl属于c++标准库的一部分,它具有容器、算法、适配器、分配器、迭代器、泛函数等六大部件。使用一个东西,却不明白它的道理,不高明。--林语堂1. c++标准库概述1.1 c++标准库学习4个阶段使用-->认识(心中自有丘原创 2017-10-05 00:04:40 · 272 阅读 · 0 评论 -
Boolan c++笔记_5
前言:本次将讲解的主要内容有:有关对象模型的一些知识、const、operator new和operator delete这一系列的函数重载。1. 对象模型1.1 虚指针,虚表,动态绑定,多态当类中有虚函数时,每个实例化的对象都有一个指向虚表的指针,且每个对象有各自的虚表,虚表中存放虚函数的地址,对于各个对象来讲虚函数只有一份,各个对象通过查虚表找到虚函数。虚机制 动态绑定有三个必要条件:原创 2017-10-05 00:04:37 · 174 阅读 · 0 评论 -
Boolan c++对象模型_内存对齐_总结
前言:c++ language博大精深,需要我们透过现象看清本质才是正道。不积硅步,无以至千里;不积小流,无以成江海。坚持总结,坚持写作。下面是对第四周的作业的总结。1. 对象模型图图1 对象模型图2. 内存对齐以下结果来自vs2017 x86。Fruit占32字节,Apple占40字节。图2 Fruit图3 Apple3. 一些相关知识点总结(1) 数据类型所占字节:原创 2017-10-05 00:04:34 · 239 阅读 · 0 评论 -
Boolan c++笔记_4
C++程序设计(II)兼谈对象模型摘要第三讲主要讲解了C++语法上的一些重要的知识,包括对象和其他类型之间的转换、像指针一样的类、像函数一样的类(这样的形容方式在我看来恰到好处,生动形象~~)、各种类型的模板、三个c++11的主题(pack、auto、基于范围的for)、以及对引用的深入剖析。还谈到面向对象编程和泛型编程是c++技术的主流。c++的标准库主要运用这两种编程思想所写。1. 对象原创 2017-10-05 00:04:32 · 229 阅读 · 0 评论 -
Boolan c++笔记_3
面向对象的设计OOD摘要第三讲主要讲解的是面向对象的三大武器,以及一些常用的设计模式。首先,类和类之间的关系可以总结为三种基本关系:复合、委托、继承。设计模式则是建立在这三种基本关系之上的。主要讲解的设计模式有观察者模式、组合模式、原型模式等。下面的类图是利用processon一个在线画图工具,并结合自己理解所画。1. Composition 复合, has-a.一个类拥有另一个类。类图原创 2017-10-05 00:04:29 · 188 阅读 · 0 评论 -
Boolan c++笔记_2
1. big three带有指针的class, 拷贝构造,拷贝赋值和析构函数必须自己写(深拷贝)。编译器给的那一套是浅拷贝(会内存泄漏,及同时修改会有危险)。 stl中的string类是采用的深拷贝。(1)拷贝构造inlineString::String(const char *cstr = 0){ if(ctor) { m_data = new原创 2017-10-05 00:04:26 · 227 阅读 · 0 评论 -
Boolan 设计模式_3
”对象性能“模式:解决对象创建代价问题1. 单件模式在整个系统中保证只存在一个实例。构造函数和拷贝构造函数设置为private。getInstance不是多线程安全的,可能出现对象被创建多个的情况。双检查锁,在lock的前后判断m_instance是否为空。因为可能多个线程都走进到m_instance==nullptr分支,所以之后每个线程在获得锁之后要再次判断m_instance=原创 2017-10-05 00:04:59 · 131 阅读 · 0 评论