
C++
文章平均质量分 83
Sheena爽
这个作者很懒,什么都没留下…
展开
-
C++之单例模式(饿汉模式、懒汉模式)
文章目录一、设计模式1.什么是设计模式2.设计模式目的3.设计模式的种类二、单例模式1.饿汉模式2.懒汉模式一、设计模式1.什么是设计模式设计模式是一套被反复使用的、多数人知晓的、经过分类的、代码设计经验的总结。2.设计模式目的为了代码可重用性、让代码更容易被他人理解、保证代码可靠性。3.设计模式的种类单例模式工厂模式:通过对象构造工厂,创建相应的对象实例。用一个方法来代替new关键字。代理模式:对代理类进行动态的扩展。为其他对象提供一个代理,以控制对当前对象的访问。适配器模式原创 2020-06-02 16:29:48 · 366 阅读 · 0 评论 -
C++之智能指针
在C++之异常中我们了解了异常有关的问题。提到了异常安全的问题。本篇博客就是学习解决异常安全问题的方法------智能指针。文章目录一、内存泄漏(复习)1.内存泄漏的定义2.内存泄漏的危害3.内存泄漏的分类二、RAII1.RAII基本介绍2.SmartPtr的方法解决上述代码问题三、智能指针的版本及发展历史1.C++98------auto_ptr2.C++11------unique_ptr3.C++11------shared_ptr4.C++11------weak_ptr(解决循环引用)四、智能指原创 2020-06-01 00:31:04 · 414 阅读 · 0 评论 -
C++11之异常
C语言处理错误的方式:(1)终止程序。如assert、exit,缺陷:用户难以接受。例如:发生了内存错误,除数为0错误时就会终止程序。(2)返回错误码。缺陷:需要程序员自己去查找对应的错误。例如:系统的很多库接口函数都是通过把错误码传到errno中,表示错误。(3)C语言标准库中有setjmp和longjmp组合。文章目录一、C++异常概念1.关键字2.异常终止程序执行3.重新抛异常二、异常安全三、异常规范四、自定义异常体系五、C++标准库的异常体系六、异常的优缺点1.异常的优点2.异常的缺点.原创 2020-05-28 23:03:21 · 873 阅读 · 0 评论 -
C++之C++11
文章目录一、默认成员函数的控制1.显式缺省函数2.删除默认函数二、final和override三、变量的类型推导四、范围for五、初始化列表六、右值引用七、lambda表达式一、默认成员函数的控制1.显式缺省函数在C++11中,可以在默认函数定义或者声明时加上=default,从而显式的知指示编译器生成该函数的默认版本,用=default修饰的函数称为显式缺省函数。class A{public: A(int a)//有了该构造函数,编译器不会自动生成默认的构造函数 :_a(a) {}原创 2020-05-27 17:39:56 · 1408 阅读 · 0 评论 -
C++之关联式容器(unordered_map/unordered_set)和哈希表
文章目录一、unordered系列容器和map、set1.unordered_map的使用2.unordered_set的使用3.unordered系列容器与map和set的效率对比二、哈希1.概念2.哈希函数3.哈希冲突一、unordered系列容器和map、set1.unordered_map的使用函数声明功能介绍bool empty() const检测unordered_map是否为空size_t size() const获取unordered_map的有效元素个数原创 2020-05-22 16:05:11 · 557 阅读 · 0 评论 -
C++之关联式容器(map/multimap、set/multiset、AVLTree/RBTree)
STL六大组件中的容器分为序列式容器和关联式容器,在前面的C++之序列式容器(vector、list、deque、string)中我们了解了序列式容器,在本篇博客中,将介绍容器中的关联式容器。树型结构的关联式容器主要有四种:map、set、multimap、multiset。关联式容器也是用来存储数据的,与序列式容器不同的是,其里面存储的是<key, vallue>结构的键值对(键值对:是用来表示具有一一对应关系的一种结构,该结构中一般只包含两个成员变量key和value,key代表键值,.原创 2020-05-18 15:56:49 · 383 阅读 · 0 评论 -
C++三大特征之多态(虚函数、抽象类)
面向对象语言三大特征:封装、继承和多态。文章目录一、多态的概念1.多态的定义2.多态的构成条件二、虚函数1.虚函数的重写2.多态(虚函数重写)的例外3.抽象类(接口类)三、多态的原理1.多态类的对象模型2.多态的原理四、多态的动态绑定与静态绑定1.多态的静态绑定2.多态的动态绑定五、重载、重定义(隐藏)和重写(覆盖)的对比一、多态的概念1.多态的定义多态就是多种形态。是去完成某个行为,当不同的对象去完成时会产生出不同的状态。多态是在不同继承关系的类对象,去调用同一函数,产生了不同的行为。比如.原创 2020-05-14 14:39:20 · 464 阅读 · 0 评论 -
C++三大特征之继承(含菱形继承,菱形虚拟继承)
面向对象语言的三大特征:封装、继承、多态。文章目录一、继承的概念及定义1.继承的概念2.继承基类成员访问方式的变化3.父类和子类之间的赋值4.继承中的作用域5.隐藏(重定义)6.派生类的默认成员函数二、继承与友元、静态成员1.继承与友元2.继承与静态成员三、菱形继承及菱形虚拟继承1.单继承2.多继承3.菱形继承4.菱形继承造成的问题5.解决菱形继承造成的问题的方法和原理四、继承和组合一、继承的概念及定义1.继承的概念继承是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特.原创 2020-05-12 16:57:47 · 351 阅读 · 0 评论 -
C++之动态内存管理(new、delete、operator new、operator delete、new的定位表达式)
C语言中的动态内存函数有malloc、free、calloc、realloc四个函数,详细介绍请看C语言之动态内存管理(动态内存函数) 。文章目录一、C/C++内存分布二、C++动态申请内存1.对于内置类型的操作2.对于自定义类型的操作3.operator new 与 operator delete函数4.new和delete的实现原理5.new的定位表达式5.malloc/free和new/delete的区别三、内存泄露1.内存泄漏的定义2.内存泄漏的危害3.内存泄漏的分类4.如何避免一、C/C+.原创 2020-05-11 17:10:50 · 269 阅读 · 0 评论 -
C++之适配器(stack、queue、priority_queue)
适配器也是STL六大组件之一。文章目录一、适配器1.适配器定义2.三种顺序适配器二、stack1.stack的定义2.stack的使用适配器stack的模拟实现三、queue1.queue的定义2.queue的使用3.适配器queue的模拟实现四、priority_queue1.priority_queue的定义2.priority_queue的使用3.适配器priority_queue的模拟实现一、适配器1.适配器定义适配器是一种设计模式(设计模式使一套呗反复使用的、多数人知晓的、经过分类编.原创 2020-05-11 14:27:42 · 281 阅读 · 0 评论 -
C++之序列式容器(vector、list、deque、string)
STL六大组件:仿函数、空间配置器、算法、容器、迭代器、配接器。本节内容介绍的是STL六大组件中的容器,容器分为序列式容器和关联式容器,而本节内容主要介绍序列式容器。文章目录一、vector1.vector的定义及使用2.vector的模拟实现3.resize和reverse的区别二、list1.list的定义及使用2.list的模拟实现三、deque1.deque的定义及使用四、strin...原创 2020-05-09 21:12:29 · 492 阅读 · 2 评论 -
C++之模板
模板分为函数模板和类模板两种文章目录一、函数模板1.函数模板的概念及格式2.函数模板的原理3.函数模板的实例化4.函数模板的匹配二、类模板1. 类模板的实例化三、模板参数的分类1.类型形参2.非类型形参四、模板特化1.概念2.类模板特化五、模板分离编译1.分离编译概念2.模板的分离编译六、模板总结1.优点2.缺点一、函数模板#include <iostream>using...原创 2020-05-05 16:57:24 · 195 阅读 · 0 评论 -
C++之类和对象
C++是基于面向对象的,关注的是对象。类的格式是class Name{};C++中class和struct的区别:C++需要兼容C语言,所以C++中struct可以当成结构体去使用。另外,C++中可以用来定义类。和class定义类是一样的。区别是struct中的成员函数和成员变量默认访问权限是public,class中的成员函数和成员变量默认访问权限是private。文章目录一、类的访问...原创 2020-05-04 16:10:04 · 329 阅读 · 1 评论 -
C++之引用及其与指针的区别
一、基本概念及使用1.引用的基本概念和基本使用定义:引用不是新定义一个变量,而是给已存在的变量取一个别名,编译器不会为引用变量开辟空间,它和它引用的变量共用同一块内存空间。特性:① 引用在定义时必须初始化。② 一个变量可以有多个引用。③ 一个引用一旦引用了一个实体,再也不能引用其他实体。#include <iostream>using namespace std;...原创 2020-03-01 17:32:36 · 286 阅读 · 2 评论 -
C++之入门(命名空间、输入输出、缺省参数、函数重载)
一、命名空间为了解决C语言的命名冲突,C++引入命名空间。命名空间的定义:需要使用namespace关键字,后面跟命名空间的名字,然后接一对{}即可,{}中的内容即是命名空间的成员。如下例所示:#include <iostream>namespace sheena{ int printf = 20; }int main(){ printf("%d\n", s...原创 2020-03-01 16:02:49 · 284 阅读 · 0 评论