
C++
文章平均质量分 97
学习C++语言时写作的文章。
Snow_Dragon_L
这个作者很懒,什么都没留下…
展开
-
类型转换与RTTI
一、类型转换1、C语言2、C++3、注意二、static_cast1、介绍2、示例三、reinterpret_cast1、介绍2、示例代码3、运行结果四、const_cast1、介绍2、示例五、dynamic_cast1、介绍2、示例代码3、运行结果六、RTTI1、介绍2、typeid(1)介绍(2)示例代码3、decltype原创 2024-09-24 19:28:29 · 619 阅读 · 2 评论 -
IO相关流
一、C语言的输入与输出1、介绍2、输入输出缓冲区(1)介绍(2)示意图二、流1、介绍2、主要特点三、C++IO流1、介绍2、示意图四、iostream1、介绍2、基本概念3、注意五、类型转换1、operator bool(1)介绍(2)示例(3)示例代码12、构造函数3、C++类型转换六、文件IO流(fstream)1、介绍2、示例3、参数mode4、二进制方式读写(1)示例代码(2)运行结果(3)注意5、文本方式读写(1)示例代码(2)运行结果七、stringstream1、介绍2、主要特点3、注意原创 2024-09-24 19:24:49 · 764 阅读 · 0 评论 -
C++11(二)
一、新的类功能1、移动构造函数和移动赋值运算符重载(1)介绍(2)编译器默认生成条件2、类成员变量初始缺省值3、default和delete关键字4、override与final关键字二、可变参数模板1、介绍2、递归函数方式展开参数包,介绍、示例代码、实现原理、运行结果、注意事项3、emplace接口三、lambda表达式1、介绍2、语法3、参数说明4、捕获列表说明(1)值捕获(2)引用捕获(3)混合捕获(4)注意事项四、包装器1、介绍2、function类五、bind1、介绍2、基本语法六、相关文章原创 2024-09-09 17:25:20 · 1207 阅读 · 3 评论 -
C++11(一)
一、简介二、统一的列表初始化三、initializer_list四、声明1、auto2、decltype五、左值引用与右值引用1、左值与左值引用2、示例代码3、右值与右值引用4、示例代码5、move(1)函数(2)作用6、总结六、右值引用和移动语义1、左值引用的短板2、移动语义3、示例代码4、示意图七、万能引用与完美转发1、万能引用(1)基本概念(2)用途(3)万能引用与右值引用的区别(4)参数转发属性变化2、完美转发3、示例代码4、运行结果八、后续文章原创 2024-09-09 17:15:53 · 1353 阅读 · 3 评论 -
特殊类设计与单例模式
一、不能被拷贝的类1、介绍2、示例代码二、只能在堆上创建对象的类1、介绍2、示例代码三、只能在栈上创建对象的类1、介绍2、示例代码四、单例模式1、介绍2、设计模式3、懒汉式(1)介绍(2)示例代码1(3)运行结果(4)示例代码2(5)说明4、饿汉式(1)介绍(2)示例代码原创 2024-09-08 21:22:12 · 939 阅读 · 1 评论 -
线程相关内容
一、介绍二、thread库1、构造函数2、join函数3、detach4、joinable5、get_id函数三、mutex的种类1、mutex,lock、unlock、try_lock2、recursive_mutex3、timed_mutex四、lock_guard五、unique_lock六、condition_variable,wait3、等待一段时间4、通知七、this_thread八、应用1、题目2、解析3、代码九、atomic十、相关概念1、内存屏障2、并发3、并行十一、无锁编程十二、相关文章原创 2024-09-08 21:17:57 · 1140 阅读 · 0 评论 -
异常与使用
一、C语言传统的错误处理机制二、异常1、概念2、关键字3、示例三、异常的使用1、异常的抛出和匹配原则2、在函数调用链中异常栈展开匹配原则3、栈展开示意图4、示例代码5、运行结果四、异常的重新抛出1、作用2、示例代码3、运行结果五、异常安全六、异常规范1、概念2、示例代码3、运行结果七、异常体系1、C++标准库(1)概念(2)示意图2、自定义(1)作用(2)示意图八、异常的优缺点1、优点2、缺点原创 2024-08-31 18:03:53 · 1048 阅读 · 4 评论 -
智能指针(RAII)
一、内存泄漏1、介绍2、原因3、泄漏的内存类型分类二、RAII1、介绍2、基本思想3、优点4、实现方式三、unique_ptr1、介绍2、主要特性3、注意事项4、unique_ptr类5、示例代码6、运行结果7、简单实现四、shared_ptr1、介绍2、主要特点3、注意事项4、shared_ptr类5、简单实现五、weak_ptr1、介绍2、weak_ptr类3、shared_ptr的循环引用问题4、循环引用示例代码原创 2024-08-31 17:59:00 · 1026 阅读 · 0 评论 -
set与map
一、序列式容器与关联式容器二、pair1、键值对2、作用3、构造函数4、make_pair(1)构造函数(2)作用5、代码6、运行结果三、set1、概念2、代码3、运行结果4、说明四、multiset1、与set的关系2、代码3、运行结果五、map1、概念2、代码3、运行结果六、multimap1、与map的关系2、代码3、运行结果原创 2023-11-29 21:04:00 · 1504 阅读 · 14 评论 -
二叉搜索树
一、概念二、K模型与KV模型三、整体框架1、代码2、实现原理四、查找操作1、操作2、代码3、实现原理五、插入操作1、操作2、代码3、实现原理六、中序遍历1、代码2、实现原理七、删除操作1、操作2、代码3、实现原理图4、注意八、性能分析九、整体代码原创 2023-11-27 15:45:34 · 979 阅读 · 9 评论 -
C++中的多态
一、概念二、虚函数1、概念2、重写(覆盖)3、重载、覆盖(重写)、隐藏(重定义)的对比(1)重载(2)重写(3)隐藏三、多态的定义与使用1、多态的构成条件2、代码3、运行结果四、虚函数重写的两个例外1、协变2、析构函数的重写五、override和final六、抽象类1、概念2、接口继承和实现继承3、代码4、运行结果5、错误代码6、编译器报错七、虚函数表1、代码2、运行结果与调试窗口查看3、说明6、派生类虚表的生成7、虚函数与虚表八、动态绑定与静态绑定原创 2023-11-05 16:58:41 · 384 阅读 · 17 评论 -
继承、菱形继承与虚拟继承
一、继承概念二、定义格式三、继承方式四、派生类继承基类成员访问方式的变化五、基类和派生类对象赋值转换1、概念2、示意图3、示例代码4、特点六、继承中的作用域1、概念2、示例代码3、运行结果七、派生类的默认成员函数1、调用方法2、示例代码3、运行结果八、友元关系不能继承1、代码2、注意3、运行结果4、错误代码与编译器报错九、继承类别1、单继承(1)概念(2)示意图2、多继承(1)概念(2)示意图3、菱形继承(1)概念(2)示意图(3)缺点(4)示例代码(5)调试结果(6)不显式指定时编译器报的错误4、虚拟继承原创 2023-11-03 19:39:56 · 335 阅读 · 14 评论 -
list的模拟实现
一、节点类1、代码2、实现原理3、注意二、迭代器类1、基本框架(1)代码(2)实现原理2、*运算符重载(1)代码(2)作用(3)注意3、->运算符重载4、自增与自减运算符重载5、判断运算符重载三、list类1、基本框架(1)代码(2)实现原理(3)注意2、insert函数3、erase函数4、迭代器函数5、clear函数和析构函数6、swap函数、构造函数、拷贝构造函数和赋值运算符重载(1)代码(2)实现原理四、模拟实现list的代码原创 2023-10-23 23:38:26 · 446 阅读 · 22 评论 -
vector的模拟实现
一、整体框架1、代码2、实现原理3、注意二、迭代器操作函数1、代码2、实现原理三、容量函数1、代码2、实现原理四、reserve函数1、代码2、实现原理3、注意五、resize函数1、代码2、实现原理3、注意六、insert函数1、代码2、实现原理3、注意七、erase函数1、代码2、实现原理八、构造函数1、代码2、实现原理3、注意九、swap函数和赋值运算符重载函数1、代码2、实现原理十、拷贝构造函数1、代码2、实现原理3、注意十一、析构函数1、代码2、实现原理十二、模拟实现vector与测试的代码原创 2023-10-22 00:17:02 · 343 阅读 · 18 评论 -
string的模拟实现
一、整体框架1、代码2、实现原理3、注意二、构造函数1、代码2、实现原理3、注意三、析构函数1、代码2、实现原理四、swap和拷贝构造函数1、代码2、实现原理五、赋值运算符重载函数1、代码2、实现原理六、resize函数七、reserve函数八、c_str函数九、[]运算符十、insert函数十一、erase函数十二、push_back函数十三、append函数十四、关系运算符十五、find函数十六、流输入与流提取运算符重载十七、模拟实现string与测试的代码原创 2023-10-20 10:03:38 · 300 阅读 · 16 评论 -
string容器的常用操作
string容器、string构造函数、赋值运算符、[]运算符、容量操作、find、rfind、substr、append、push_back、+=。string和vector都不喜欢用iterator,因为[]更好用,而list、map和set等等只能用迭代器进行访问。iterator是所有容器通用的访问方式,即所有容器的用法都是类似的。iterator的用法像指针一样。在string尾部追加字符时,s.push_back( c ) / s.append(1, c) / s += 'c’三种实现差不多。原创 2023-09-07 07:52:14 · 1416 阅读 · 11 评论 -
模板和STL简介
泛型编程的概念。函数模板的概念与使用。类模板的概念与使用。STL的概念、简介与其六大组件。错误的代码示例与编译器报错。使用函数重载虽然可以实现一个通用的交换函数,但是使用这种方法有几个不好的地方。重载的函数只有形参的类型不同,其他的都一样,这样的代码复用率比较低,当要进行操作的对象的类型不同时,就需要用户自己添加对应类型的函数。代码的可维护性比较低,一个函数出错可能所有的重载函数均会出错。原创 2023-09-04 12:34:06 · 1111 阅读 · 10 评论 -
内存管理方式
C/C++的内存管理方式,malloc/calloc/realloc/free、new/delete及其实现原理和new[]/delete[]。operator new与operator delete。内存泄漏。栈/堆栈:存储非静态的局部变量、函数参数、返回值等等,栈是向下增长的。内存映射段:高效的I/O映射方式,用于装载一个共享的动态内存库。用户可以使用系统接口创建共享内存,做进程间通信。堆:用于程序运行时进行动态内存分配,堆是向上增长的。数据段:存储全局数据和静态数据。代码段:存储可执行的代码、只读常量原创 2023-09-03 12:18:24 · 2084 阅读 · 12 评论 -
类与对象(下)
一、初始化列表1、构造函数与初始化在对象调用构造函数之后,对象中的成员变量虽然已经有了一个初始值2、使用初始化列表的形式在构造函数后面,以一个冒号开始,接着是一个以逗号分隔的数据成员列表,每个“成员变量”后面跟一个放在括号中的初始值或表达式。类中包含以下成员变量时,必须将其放在初始化列表位置进行初始化:引用成员变量。const成员变量。自定义类型成员变量。explicit关键字、static成员、友元1、友元函数、友元类、内部类1、作用2、代码3、讲解4、运行结果与编译器报的错误友元类(1)概念(2)特性(原创 2023-08-26 10:47:09 · 649 阅读 · 11 评论 -
类与对象(中)
本文讲解的是类与对象的关系,主要讲解六个默认成员函数,构造函数、析构函数、拷贝构造函数、赋值运算符重载等等,讲解它们的概念、作用与如何使用等等,文章讲解详细、清晰且附有代码与图片。内置类型:语言提供的数据类型,如:int、char、double等等。自定义类型:我们使用class、struct、union等等,自己定义的类型。原创 2023-08-23 19:05:44 · 338 阅读 · 9 评论 -
类与对象(上)
/类体:由成员函数和成员变量组成//记得加上分号class为定义类的关键字,ClassName为要定义的类的名字,{}中的内容为类的主体,在类定义结束时,}后面的分号不能省略。类体中的内容称为类的成员:类中的变量称为类的属性或成员变量;类中的函数称为类的方法或者成员函数。声明和定义全部放在类体中,编译器可能会将其当成内联函数处理。int _age;原创 2023-08-18 21:32:50 · 983 阅读 · 11 评论 -
万字讲解C++基础
定义命名空间,需要使用到namespace关键字,该关键字后面跟命名空间的名字,然后接一对{}即可,{}中的成员即为命名空间的成员,{}为这些成员的域。即一个命名空间就定义了一个新的作用域,命名空间中的所有内容都局限于该命名空间中。{}内的成员即为命名空间snow的成员在命名空间snow中嵌套定义了dragon命名空间。原创 2023-08-14 21:17:47 · 867 阅读 · 13 评论