C++
文章平均质量分 90
蚍蜉撼树谈何易
愿你有理想可奔赴,亦有青春可回顾。
展开
-
C++线程
argsfnxx。原创 2023-05-25 17:12:49 · 1026 阅读 · 0 评论 -
hash--
哈希哈希概念实现机制哈希冲突解决哈希冲突方法闭散列与开散列闭散列开散列开散列的增容问题对比开散列与闭散列比较测试代码哈希概念哈希是C++11的产物,是为了提高查找效率所提出的一种关联式容器。底层结构:链表+(指针)数组哈希是一种高效用来搜索的数据结构,与传统的查找方式进行比较,发现传统的方式都需要进行元素的比较,性能高低取决于元素的比较次数。让元素在查找时不进行比较,或者减少比较次数。顺序结构以及平衡树中,元素关键码与其存储位置之间没有对应的关系,因此在查找一个元素时,必须要经过关键码的多次比较。原创 2021-09-01 04:39:23 · 390 阅读 · 0 评论 -
智能指针11
智能指针智能指针存在的必要性智能指针的使用及原理C++98中的智能指针C++11中的智能指针C++11中unique_ptr指针C'++11中的shared_ptrshared_ptr循环引用所引发的问题。如何解决shared_ptr所造成的循环调用所引起的内存泄露的问题智能指针存在的必要性malloc出来的空间,没有进行释放,存在内存泄漏的问题。异常安全问题。如果在malloc和free之间如果存在抛异常,那么还是有内存 泄漏。这种问题就叫异常安全智能指针的使用及原理RAII原创 2021-08-29 23:48:24 · 280 阅读 · 0 评论 -
map与set
map-setmap、set简介常见接口使用map构造map的insert操作map中的元素访问的操作map中的删除操作map中的find操作setset构造map、set简介常见接口使用map构造void testmap1(){ map<string, string> m1; map<string, string>m2{ {"apple","苹果"},{"orange","橘子"} }; cout << m1.size() << e原创 2021-08-29 01:04:57 · 195 阅读 · 0 评论 -
C++多态
一、多态的概念?通俗来说,就是多种形态,具体点就是去完成某个行为,当不同的对象去完成时会产生出不同的状态二、多态的条件?三、什么是重写?派生类中有一个跟基类完全相同的虚函数(即派生类虚函数与基类虚函数的返回值类型、函数名字、参数列表完全相同),称子类的虚函数重写了基类的虚函数条件:1.基类的成员函数必须是虚函数2.子类的成员函数可以不加virtual关键字,但一般建议加上3.基类和子类的虚函数原型必须一致,(返回值类型,函数名字,参数列表),有两个例外,返回值为类型指针或引用时可以,第二个原创 2021-08-06 16:15:21 · 209 阅读 · 0 评论 -
C++继承
继承继承概念基类和派生类对象赋值转换同名隐藏子类构造与析构基类中友元与static变量继承派生类的默认成员函数菱形继承面试总结继承概念继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。以前我们接触的复用都是函数复用,继承是类设计层次的复用。使用关键字class时默认的继承方式是private,使用struct时默认的继原创 2021-08-04 23:36:28 · 200 阅读 · 0 评论 -
C++模板进阶
模板进阶目标非类型模板参数模板的特化概念模板的编译函数模板的特化类模板化全特化偏特化--重点模板分离编译什么是分离编译模板分离所带来的优点普通.h文件实例化模板所造成问题解决方法首先介绍一下.hpp与.h区别解决方案--将头文件由.hpp替换掉.h模板优缺点目标非类型模板参数类模板的特化类模板特化的应用之类型萃取模板的分离编译非类型模板参数模板参数分类类型形参与非类型形参。类型形参即:出现在模板参数列表中,跟在class或者typename之类的参数类型名称。非类型形参,就是用一个常量作为原创 2021-08-02 00:07:52 · 179 阅读 · 0 评论 -
随笔--类和对象初阶问题总结(面试)
类和对象初阶必会知识点面向对象与面向过程的区别面向对象的三大特性封装继承多态const关键字const修饰普通变量const修饰类成员和类成员函数区分初始化与赋值const修饰成员变量面向对象与面向过程的区别C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。C++是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完成,面向对象是把构成问题原创 2021-06-22 12:28:40 · 281 阅读 · 6 评论 -
C++初阶模板
C++模板模板为什么要提出模板这个概念模板的分类函数模板函数模板概念函数模板格式函数实例化的原理函数模板的实例化隐式实例化--让编译器去推演出函数参数及返回值类型显式实例化模板参数的匹配原则函数模板的重载类模板根据类模板实现一下顺序表利用数组来初始化一个顺序表模板什么是模板?模板就类似于去浇筑东西的一个摸具,你需要什么东西,只要根据需要的不同去选择不同的浇筑材质即可。为什么要提出模板这个概念其实很好理解,就是为了"偷懒",就类似于工人去雕琢一个东西一样,没有模板的话雕琢起来是很慢的,但是有了模板,可原创 2021-06-18 22:43:10 · 241 阅读 · 4 评论 -
C/C++内存管理
C++内存管理C/C++内存分布C语言内存开辟(堆上)的三大函数面试题:malloc、calloc、realloc区别探究realloc底层实现。C++内存开辟与释放函数内存开辟函数new与new[]函数newnew[]内存释放函数c语言内存管理与C++内存管理的区别在使用的时候必须对应使用C/C++内存分布示例图:栈区(stack):由编译器自动分配与释放,存放为运行时函数分配的局部变量、函数参数、返回数据、返回地址等。其操作类似于数据结构中的栈。堆区(heap):一般由程序员自动分配,如果程序原创 2021-06-17 02:18:02 · 471 阅读 · 12 评论 -
C++类和对象中
类和对象认识类中的6个默认成员函数构造函数编译器会自动调用构造函数构造函数是可以进行重载的如果没有显式的给出构造函数,则编译器会自动生成一个函数作为默认构造函数无参构造函数与全缺省构造函数不能同时存在探究编译器默认给出的构造函数到底有没有用构造函数的调用顺序默认析构函数认识类中的6个默认成员函数构造函数目的:主要为对象 完成初始化的操作,不负责给对象开辟空间。构造函数是一个特殊的成员函数,名字与类名相同,创建类类型对象时由编译器自动调用,保证每个数据成员都有 一个合适的初始值,并且在对象的生命周期内原创 2021-06-16 15:57:29 · 248 阅读 · 5 评论 -
C++类和对象下
类和对象下const修饰的成员函数const修饰成员变量区分一下构造函数的初始化与赋值区别const修饰成员变量类作为另一个类对象时调用构造函数构造函数的初始化列表中必须显式的给出三种情况成员变量在类中声明次序就是其在初始化列表中的初始化顺序,与其在初始化列表中的先后次序无关静态成员变量与静态成员函数const修饰的成员函数规则1:const的成员变量不可以去调用非const的成员函数测试用例:class date{public: date(int _year, int _month, int原创 2021-06-16 15:56:35 · 217 阅读 · 6 评论 -
C++ 类和对象上
类和对象什么是面向对象,什么是面向过程类的引入类的引入类的权限问题类定义的两种方式类的访问限定符及封装访问限定符的说明C++中struct 和class区别是什么?三级目录什么是面向对象,什么是面向过程C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。C++是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完成面向对象是把构成问题事务分解原创 2021-06-12 01:46:21 · 854 阅读 · 26 评论 -
C++从学渣到学霸之了解C++
引言:本篇博客主要介绍C++的发展史及C++的一些特性。及相对于C语言来说C++做了那些更好的优化。如果你刚结束完C语言学习的话,又相对C++了解的话,相信我,这篇博客可以让你收益良多。什么是C++C语言是结构化和模块化的语言,适合处理较小规模的程序。对于复杂的问题,规模较大的程序,需要高度的抽象和建模时,C语言则不合适。为了解决软件危机, 20世纪80年代, 计算机界提出了OOP(objectoriented programming:面向对象)思想,支持面向对象的程序设计语言应运而生。1982年,B原创 2021-06-06 13:09:51 · 956 阅读 · 14 评论