基础学习
文章平均质量分 58
ahapeach
这个作者很懒,什么都没留下…
展开
-
设计模式三(学习笔记)
对象创建模式:通过“对象创建”模式绕开new,来避免对象创建(new)过程种所导致的紧耦合(以来具体类),从而支持对象创建的稳定。它是接口抽象之后的第一部工作典型模式:Factory Method、Abstract Factory、Prototype、Builder1。Factory Method(工厂方法模式)动机:在软件系统中,经常面临着创建对象的工作;由于需求的变化,需要创建的对象的具体类型经常变化。定义:定义一个用于创建对象的接口,让子类决定实例化哪一个类,Factory Method使得原创 2021-03-22 14:27:00 · 71 阅读 · 0 评论 -
设计模式二(学习笔记)
“单一职责”模式:在软件组件的设计中,如果责任划分的不清楚,使用继承得到的结果往往是睡着需求的变化,子类急剧膨胀,同时充斥着重复代码,这时候的关键是划清责任。经典模式:Decorator 、 Bridge1.Decorator模式动机:在某些情况下,我们可能会“过度的使用继承来扩展对象的功能”,由于继承为类型引入的静态特质,使得这种扩展方式缺乏灵活性;并且随着子类的增多(扩展功能的增多),各种子类的组合(扩展功能的组合)会导致更多的子类的膨胀。定义:动态(组合)地给一个对象增加一些额外的职责。就原创 2021-03-20 17:32:26 · 60 阅读 · 0 评论 -
设计模式一(学习笔记)
设计模式的作用:在变化和稳定之间寻找隔离点来分离他们从而来管理变化。因此全稳定和全变化的状态下都无设计模式可用。“组件协作”模式:主要通过晚期绑定,来实现框架与应用程序之间的松耦合,是二者之间协作是常用的模式。1.Template Method(模板方法)动机:在软件构建过程中,对于某一项任务,他常常有稳定的整体操作结构,但各个子步骤却有很多改变的需求,或者由于固有原因而无法与任务的整体结构同时实现。定义:定义一个操作中的算法的骨架(稳定),而将一些步骤延迟(变化)到子类中。Template Met原创 2021-03-19 23:19:03 · 65 阅读 · 0 评论 -
STL中关于count函数的运用
此案例主要是计算存储在map容器中人员某岁数的人数count函数在头文件下在map中插入自定义类型key值元素时需要指定规则,因为他会按照key值排好序插入,且不插入重复的key值元素(multimap可以重复插入):方法一:重载<运算符,在某些版本编译器中需要用const修饰参数,若做成员函数则需要定义为常函数 方法二:使用仿函数,某些编译器下同样需要定义为常函数使用count时需要指定规则,即重载==运算符,注意传参的类型为对组类型,且需要用const修饰所有参数#include&原创 2021-02-17 14:39:00 · 935 阅读 · 0 评论 -
set容器中自定义类型数据的插入
自定义类型一定要指定插入规则通过仿函数或者重载<操作符举个例子:按年龄降序,再按身高降序排序1.仿函数#include<iostream>#include<set>#include<string>using namespace std;class Person{public: Person(string name, int age, float height) { m_name = name; m_age = age; m_hei原创 2021-02-15 23:12:46 · 776 阅读 · 0 评论 -
C++中类模板分文件编写
问题:类模板中的成员函数创建时机是在调用阶段,导致分文件编写链接不到解决:方式1:直接包含cpp文件(不推荐)头文件Person.h包含声明#pragma once#include<iostream>#include<string>using namespace std;template<class T1,class T2>class Person{public: Person(T1 a,T2 b); void show();private:原创 2021-02-07 22:47:33 · 307 阅读 · 0 评论 -
C++中关于虚函数的一些说明(转)
总结1本来基类指针是用来指向基类对象的,如果用它指向派生类对象,则进行指针类型转换,将派生类对象的指针先转换为基类的指针,所以基类指针指向的是派生类对象中的基类部分。在程序修改前,是无法通过基类指针去调用派生类对象中的成员函数的。虚函数突破了这一限制,在派生类的基类部分中,派生类的虚函数取代了基类原来的虚函数,因此在使基类指针指向派生类对象后,调用虚函数时就调用了派生类的虚函数。 要注意的是,只有用virtual声明了虚函数后才具有以上作用。如果不声明为虚函数,企图通过基类指针调用派生类的非虚函数是不行的转载 2021-02-07 17:48:00 · 333 阅读 · 0 评论 -
c++拷贝构造函数详解(转)
一、什么是拷贝构造函数 首先对于普通类型的对象来说,它们之间的复制是很简单的,例如int a=100;int b=a;而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量。下面看一个类对象拷贝的简单例子。#include<iostream>using namespace std;class CExample{private: int a;public: //构造函数 CExample(int b) { a转载 2021-01-31 13:13:20 · 232 阅读 · 0 评论 -
C++内存对齐总结(转)
转载来源作者:钱书康出处:https://www.cnblogs.com/zrtqsk/p/4371773.htmlC++内存对齐总结 大家都知道,C++空类的内存大小为1字节,为了保证其对象拥有彼此独立的内存地址。非空类的大小与类中非静态成员变量和虚函数表的多少有关。而值得注意的是,类中非静态成员变量的大小与编译器内存对齐的设置有关。成员变量在类中的内存存储并不一定是连续的。它是按照编译器的设置,按照内存块来存储的,这个内存块大小的取值,就是内存对齐。一、引入问题。#include&l转载 2021-01-29 09:52:36 · 75 阅读 · 1 评论 -
c++程序内存分区
程序编译后生成exe可执行文件,未执行该程序前内存里会生成两个区域:1.代码区:存放CPU执行的机器指令(二进制数)特点:共享、只读2.全局区:该区域数据在程序结束后由操作系统释放存放全局变量、静态变量(static)、常量(包括字符串常量、const修饰的全局变量即全局常量)const修饰的局部变量即局部常量不在此区域中。#include<iostream>using namespace std;int a = 0;//全局变量int b = 0;const int c_a原创 2021-01-25 21:14:43 · 90 阅读 · 0 评论 -
C++深浅拷贝
浅拷贝:简单的赋值拷贝操作。当指针进行浅拷贝时可能会导致多个对象共用同一内存资源,同一块内存资源释放多次,导致崩溃或者内存泄漏,深拷贝:在堆区中重新申请空间,进行拷贝操作。例证:#include<iostream>using namespace std;class Person{public: int age; int* height; Person()//无参构造函数 { age = 19; height = new int(169); } ~Person()原创 2021-01-27 21:01:07 · 83 阅读 · 0 评论