C++
文章平均质量分 81
HT . WANG
Think Twice , Code Once
展开
-
C++11标准下的单例设计模式
单例设计模式设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结。为什么会产生设计模式这样的东西呢?使用设计模式的目的:为了代码可重用性、让代码更容易被他人理解、保证代码可靠性。 设计模式使代码编写真正工程化;设计模式是软件工程的基石脉络,如同大厦的结构一样。其中最具代表性的就是单例设计模式单例设计模式一个类只能创建一个对象,即单例模式,该模式可以保证系统中该类只有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享。比如原创 2021-06-06 20:01:22 · 2060 阅读 · 9 评论 -
C++11标准下的智能指针
智能指针为什么要提出智能指针的概念?能够解决什么问题?优点是什么?智能指针的提出主要是解决内存泄漏的问题那么何为内存泄漏呢? 内存泄漏原创 2021-06-04 19:09:03 · 1454 阅读 · 4 评论 -
哈希结构(图文详解)【哈希表,哈希桶,位图,布隆过滤器】
哈希结构 哈希概念 常见的K-V结构,实现了元素关键码与元素值的映射关系,但没有实现元素关键值与元素存储位置的映射关系,在遍历过程中,一般的顺序表或搜索二叉树要进行关键值的多次比较,其中顺序表的时间复杂度为O(n),二叉搜索树的时间复杂度O(lgn)对此希望找到一种理想的搜索方法:可以不经过任何比较,一次直接从表中得到要搜索的元素。 如果构造一种存储结构,通过某种函数(hashFunc)使元素的存储位置与它的关键码之间能够建立一一映射的关系,那么在查找时通过该函数可以很快找到该元素 哈希原创 2021-05-29 22:16:50 · 6320 阅读 · 6 评论 -
解密C++(二)多态属性
解密C++特性下的多态属性什么是多态?多态就是在不同继承关系的类对象,去调用同一个函数,产生不同的行为实现多态的前提条件:多态属性产生在继承过程中 必须有虚函数(virtual关键字) 调用虚函数的类型必须是指针或引用 虚函数需要被重写 一般是通过父类指针或引用进行调用虚函数根据以下代码测试可以发现,以上5点均被涉及,感兴趣可以仔细看一下代码,仔细体会5点实现条件#include<iostream>using namespace std;class pers原创 2021-05-06 22:06:57 · 1698 阅读 · 8 评论 -
解密C++(一)继承属性
解密c++特性下的继承属性 继承方式 常见地,在抽象一个c++类的时候,通常需要加入访问限定符,一般的,将成员变量定义为私有,成员函数作为公有,成员函数则成为外部访问私有成员变量的一个接口如果发现一个类中没有明确指定访问限定符,class一般默认访问限定为private私有 而在struct中一般默认访问限定为public公有具体的继承方式及访问限定如下图其中,私有成员在类外不可访问,只有类内部可访问,除非定义为该类的友元函数如果想让基类的成员仅在派生类中依然可访问,但在类..原创 2021-05-05 17:28:28 · 1767 阅读 · 6 评论 -
C++11标准下对于引用的理解
引用(C++11) 概念理解: 引用不是新定义的一个变量,而是对已经存在变量的别名从内存上来看,编译器不会为引用开辟存储空间,引用与其所指向的变量共用同一块内存空间通过下面一个示例代码来说明: 引用的应用: 首先要清楚引用的特性:1,引用必须要初始化2,引用类型必须与实体类型保持一致3,一个变量可以有多个引用4,引用一旦引用一个实体之后,不能再引用其他实体常引用:根据错误3:无法用“double”类型的值初始化“int &”类型的引用,原创 2021-02-04 11:02:50 · 1647 阅读 · 0 评论 -
对于类对象模型的理解(类大小计算+大小端字节序)
类对象模型 如何理解类与对象 类:通俗理解,类相当于一个模型框架,限定了类有哪些成员变量,但从底层来看,内存并没有分配实际的物理空间来存储类对象:类对象即为类的具体描述,当类对象进行实例化过程中,内存将为其分配物理空间一个类可以实例化多个对象,实例化出的对象 占用实际的物理空间,存储类成员变量思考:类中既可以有成员变量,又可以有成员函数,那么一个类的对象中包含了什么?如何计算一个类的大小? 类大小的计算 类中有成员变量,以及成员函数,成员函数不占据内存...原创 2021-02-04 18:02:42 · 1883 阅读 · 0 评论 -
小tips !!! 构造,析构,拷贝构造知识点总结
构造,析构,拷贝构造核心点总结 构造函数 并不是开空间创建对象 主要完成类对象初始化工作构造函数是一个特殊的成员函数,名字与类名相同,创建类类型对象时由编译器自动调用在对象的生命周期内只调用一次特征如下:1. 函数名与类名相同。2. 无返回值。3. 对象实例化时编译器自动调用对应的构造函数。4. 构造函数可以重载5.如果类中没有显式定义构造函数,则C++编译器会自动生成一个无参的默认构造函数,一旦用户显式定义编译器将不再生成6,无参的构造函数和全缺省的构造函数都...原创 2021-02-04 19:28:22 · 1575 阅读 · 0 评论 -
C++实现日期类(运算符重载)
日期类的实现经历前期C语言的学习,C语言的编程思路是面向过程的编程,将所需要实现的功能封装为每一个功能函数,在主函数中进行调用C++编程思想是面向对象的编程,相比较于C语言的编程,它更具有更高的安全性和可维护性,C++的特性将功能利用类进行抽象后进行封装,之后在通过创建对象实现功能调用 重载运算符 基于基础C++11标准下新特性,主要通过运算符重载来实现日期类首先来了解运算符重载的特性:运算符重载是具有特殊函数名的函数,也具有其返回值类型,函数名字以及参数列表,其返回值类型与...原创 2021-02-09 18:09:28 · 4769 阅读 · 2 评论 -
刷题常见vector类模板内部实现 看完思路清晰
vector类模板内部实现无论是在newcode刷题 还是在leetcode刷题 如果采用c++编译环境,功能函数的参数还是返回值均采用vector来进行存储数据为什么用vector来存储?究其原因,vector类似于一个数组,通过连续的存储空间来存放数据,对此,访问数据十分方便,但在实现插入删除时却会消耗更多的时间和空间与其同时,vector底层实现是基于类模板实现,所以,可以存储的数据类型可以自定义 包括int float string char 甚至自定义的类,结构体均可,这...原创 2021-03-30 20:12:30 · 1993 阅读 · 0 评论 -
list类模板与vetcor有何不同
在谈及二者不同之前,首先要先熟悉二者内部实现,二者内部如何实现将有助于我们进一步理解,对比优缺点前期介绍了vector类模板的实现vector类模板接下来介绍list类模板模拟实现list类模板list类实现基于带头双向循环链表,基于此结构完成基础结构搭建,定义模板类,其私有成员变量为_head 头指针,不存储数据private: ListNode<T>* _head;根据带头双向循环链表结构特点,头结点的下一个节点才开始存储数据,作为有效节点,对此需要定义Node节原创 2021-04-03 20:54:08 · 1593 阅读 · 0 评论 -
快来看一看String类内部是如何实现的
String类内部实现在C语言初识阶段,对于一些字符串的处理,往往做法是将其转换为单个字符通过遍历来进行逐个处理,但此做法需要耗费大量的计算量,如果字符串过长,导致时间甚至内存都会被大量浪费学习到C++阶段,string类的出现,将发现其所开放的接口使用极为便捷,方便尤其在大量OJ练习中,有关字符串的题目都以string类的形式出现,无论在以后工作或学习,基于软件体系结构的思想下都会以接口的形式方便底层开发,很少再去调用c库中的字符处理的相关函数明明有对应的接口,为什么还要去模拟String原创 2021-04-03 21:37:33 · 1968 阅读 · 0 评论