
C++
csdn_HZW
小尾巴来啦
展开
-
C++设计模式之抽象工厂模式
问题描述之前讲到了C++设计模式——工厂方法模式,我们可能会想到,后期产品会越来越多了,建立的工厂也会越来越多,工厂进行了增长,工厂变的凌乱而难于管理;由于工厂方法模式创建的对象都是继承于Product的,所以工厂方法模式中,每个工厂只能创建单一种类的产品,当需要生产一种全新的产品(不继承自Product)时,发现工厂方法是心有余而力不足。举个例子来说:一个显示器电路板厂商,旗下的显示器电路板...原创 2019-12-18 11:30:58 · 247 阅读 · 0 评论 -
C++设计模式之工厂方法模式
问题描述之前讲到了C++设计模式——简单工厂模式,由于简单工厂模式的局限性,比如:工厂现在能生产ProductA、ProductB和ProductC三种产品了,此时,需要增加生产ProductD产品;那么,首先是不是需要在产品枚举类型中添加新的产品类型标识,然后,修改Factory类中的switch结构代码。是的,这种对代码的修改,对原有代码的改动量较大,易产生编码上的错误(虽然很简单,如果工程...原创 2019-12-18 11:08:48 · 325 阅读 · 0 评论 -
C++设计模式之简单工厂模式
工厂模式有一种非常形象的描述,建立对象的类就如一个工厂,而需要被建立的对象就是一个个产品;在工厂中加工产品,使用产品的人,不用在乎产品是如何生产出来的。从软件开发的角度来说,这样就有效的降低了模块之间的耦合。UML类图ProductA、ProductB和ProductC继承自Product虚拟类,Show方法是不同产品的自描述;Factory依赖于ProductA、ProductB和Prod...原创 2019-12-17 18:34:05 · 295 阅读 · 0 评论 -
fatal error C1903:无法从以前的错误中恢复,正在停止编译
在使用VS2013的过程中遇到的问题办法1:清理解决方案,然后再重新生成办法2:看你是用release编译还是debug,如果是用release,删除bin目录下的release,debug也一样...原创 2019-10-15 11:21:02 · 9582 阅读 · 1 评论 -
C++学习笔记之设计模式
设计模式的概述设计模式的定义:设计模式是在特定环境下人们解决某类重复出现的一套成功或有效的解决方案。设计模式有什么用?从高端来讲的话,作用大了去了。(网上是这么说的,虽然我还体会不到哈哈)那么对于初学者来说,学习设计模式将有助于更深入的理解面向对象思想,让你知道:1、如何将代码分散在不同的类中?2、为什么要有“接口”?3、什么是对抽象编程?4、何时不应该使用继承?5、如何不修改源...原创 2019-02-28 15:07:39 · 405 阅读 · 0 评论 -
C++之UML学习笔记
软件建模概述1.1 什么是建模任何事情都要想清楚了才能去做,软件开发更是如此。写代码过程中不可能一上来就盲写代码,必须搞清楚基本问题:要做什么?做成什么样?怎样去做?1.2建模规则选择建立什么样的模型对如何发现和解决问题具有重要的影响。每个模型可以有多种表达方式,使用者的身份和使用的原因是评判模型好坏的关键。最好的模型总是能切合实际,模型是现实的简化,必须保证简化过程不会掩盖任何重...原创 2019-02-25 15:40:04 · 834 阅读 · 0 评论 -
C/C++程序代码的五大内存分区
在讲分区前,我们首先要了解程序运行的四个过程:预编译预编译主要完成以下三个具体任务:(1)把include中的头文件复制到要编译的源文件中(2)用实际值代替define文本(3)在调用宏的地方进行宏替换编译编译的主要功能包括两个部分,第一部分是检查代码的语法,如果语法错误则给出错误提示并结束编译,只有在代码无语法错误的情况下才能进入大二部分。第二部分是将预编译后的文件转换为...原创 2018-11-19 21:19:25 · 1637 阅读 · 2 评论 -
C++迭代器和显示类型转换
其实迭代器很简单,没有我们想象中的那么复杂。以前要读写数据结构中的数据,一般是通过移动指针来进行的,但是在编写指针的过程中难免会出现野指针等情况出现,这时候,神奇的迭代器出现了。迭代器是指针的一个泛化...原创 2018-11-12 16:19:28 · 3931 阅读 · 0 评论 -
C++模板
与函数的重载有点类似。顾名思义,模板的作用在于定制函数和类。只要将数据类型传递给函数模板和类模板,就能生成特定数据下的函数和类,实现数据类型不同,程序逻辑完全相同的代码重用,减轻了编程的工作量。比如,几个函数的程序逻辑相同,只是使用时的参数不同,这时候就可以把这个函数写成模板来使用。函数模板该说的都说了,直接上代码#include <QCoreApplication>#i...原创 2018-11-11 20:58:31 · 219 阅读 · 0 评论 -
C++ STL之map映照容器
map映照容器所处理的元素数据,与数据库的具有键值的记录非常相似,由一个键值和其他若干数据(映照数据)组成,键值和映照数据之间,可建立一个数学上的映照关系,由此而得映照容器的名称。**容器的数据结构同样是采用红黑树进行管理,插入的键值不允许重复,**所使用的节点元素的比较函数只对元素的键值进行比较,元素的各项数据可通过键值检索出来。map技术处理下图所示是map容器的一个元素的数据组成,可通...原创 2018-11-09 22:59:56 · 274 阅读 · 0 评论 -
C++ STL之set集合容器
set容器使用一种称为红黑树的平衡二叉检索树的数据结构,来组织泛化的元素数据。作为节点键值的元素的插入,必须确保每个子树根节点的键值大于左子树所有节点的键值,小与右子树所有节点的键值。不会将重复的键值插入容器,也不需指定具体的插入位置,而按元素在树中首尾关联关系,进行位置的检索、删除和插入。元素数据的检索,使用的是二叉检索树的中序遍历算法,检索的效率高于vector,deque和list等容器,...原创 2018-11-09 09:13:30 · 324 阅读 · 0 评论 -
C++STL之slist单向链表容器
slist为单向链表的泛化容器,与list双向链表容器一样,实现了线性表数据的链表存储,数据元素不必在物理内存中连续分布。slist链表的节点,只有后继的指针,不含前驱的指针。因此,在节省前驱指针的存储空间的同时,也就不再支持迭代器的反向移动。slist技术原理slist内部的链表由头指针、头节点和元素节点组成,每个节点含有指向后继节点的指针,最后一个节点的指针为null,可见slist没...原创 2018-11-08 12:22:33 · 1691 阅读 · 0 评论 -
C++ STL之list双向链表容器
不同于采用线性表顺序存储结构的vector和deque容器,list双向链表中任一位置的元素查找、插入和删除,都具有高效的常数阶算法时间复杂度O(1)。list技术原理为了支持前向和反向访问list容器的元素,list采用双向循环的链表结构组织数据元素,链表的每个节点包括指向前驱的指针、实际数据和指向后继的指针等数据域。list的前向链,由头节点→第1个节点→第2个节点→…第n个节点→头...原创 2018-11-07 19:45:09 · 7214 阅读 · 1 评论 -
C++ STL之vector
vector详解1. vector技术原理vector容器是一个线性结构,用三个指针存放向量的起始字节位置、当前最后一个向量的末尾字节和整个容器所占的内存空间的末尾字节,如下图所示,3个指针变量分别为 M_start、M_finish和M_end_storage2. vector应用基础2.1创建vevtor对象vector v; //创建整型的vector对象vvector...原创 2018-11-05 21:09:14 · 363 阅读 · 0 评论