
C++
文章平均质量分 93
学习C++ 以及相关生态
七凌、
一点一点进步
展开
-
【C++】STL空间配置器
容器,算法,迭代器, 空间配置器,适配器,仿函数。为各个容器进行高效的内存管理(内存的申请与回收)的。原创 2024-06-12 08:00:00 · 1181 阅读 · 0 评论 -
【C++】深入理解decltype和decltype(auto)
decltype关键字是C++11新标准引入的关键字,它和关键字auto的功能类似,也可以自动推导出给定表达式的类型,但它和auto的语法有些不同,auto推导的表达式放在的右边,并作为auto所定义的变量的初始值,而decltype它的语法像是函数调用,但它不是函数调用而是运算符,和sizeof运算符类似,在编译期间获取他的类型,表达式expr不会被真正执行,因此不会产生汇编代码。decltype和auto用auto定义变量时必须提供初始值表达式,利用初始值表达式推导出类型并用它作为变量的初始值,使用。原创 2024-06-09 08:00:00 · 1964 阅读 · 0 评论 -
【C++】 使用CRT 库检测内存泄漏
内存泄漏的检测工具有很多,大多数的内存泄漏检测工具都要我们手动安装才能使用,但是CRT(C 运行时库)库,是自带的,所以我们可以开箱即用,无需安装其他的内存泄漏检测工具。CRT检测内存泄漏原理内存分配要通过CRT在运行时实现,只要在分配内存和释放内存时分别做好记录,程序结束时对比分配内存和释放内存的记录就可以确定是不是有内存泄漏。原创 2024-06-07 08:00:00 · 1160 阅读 · 0 评论 -
【C++】C++的IO流
在C语言中,我们若是想要将一个整型变量的数据转化为字符串格式,有以下两种方法:1、使用itoa函数进行转化。int a = 10;//将整型的a转化为十进制字符数字存储在字符串arr当中2、使用sprintf函数进行转化。int a = 10;//将整型的a转化为字符串格式存储在字符串arr当中虽然itoa函数和sprintf函数都能完成转化,但是在两个函数在转化时,都需要先给出保存结果的空间,而空间的大小是不太好界定的,除此之外,转化格式不匹配时,可能还会得到错误的结果甚至程序崩溃。原创 2023-09-29 10:00:00 · 400 阅读 · 11 评论 -
【C++】C++的类型转换
而指针类型表示的是地址编号,因此整型和指针类型之间不会进行隐式类型转换,如果需要转换则只能进行显式类型转换。使用C风格的强制类型转换进行向下转型是不安全的,因为此时无论父类的指针(或引用)指向的是父类对象还是子类对象都会进行转换。,那么将其转换为子类的指针(或引用)是不安全的,因为转换后可能会访问到子类的资源,而这个资源是父类对象所没有的。C语言转换的可视性比较差,相近类型之间发生隐式类型转换,难以跟踪错误的转换。,那么将其转换为子类的指针(或引用)则是安全的。用于非多态类型的转换(静态转换),编译器。原创 2023-09-25 10:00:00 · 471 阅读 · 14 评论 -
【C++】特殊类的设计
拷贝只会放生在两个场景中:拷贝构造函数以及赋值运算符重载,因此想要让一个类禁止拷贝,只需让该类不能调用拷贝构造函数以及赋值运算符重载即可。原因:C++11C++11扩展的用法,除了释放申请的资源外,如果在默认成员函数后跟上,表示让编译器删除掉该默认成员函数。二、设计一个类,只能在堆上创建对象1、思路一:封锁构造函数实现方式:原因:对象只能通过构造函数或者拷贝构造的方式进行创建,由于构造是私有的,类外不可以访问,如果想要创建对象只能调用这个静态成员函数,而静态成员函数里面创建的对象全都被我们原创 2023-09-22 10:00:00 · 380 阅读 · 5 评论 -
【C++】智能指针
内存泄漏指因为疏忽或错误造成程序未能释放已经不再使用的内存的情况。内存泄漏并不是指内存在物理上的消失,而是应用程序分配某段内存后,因为设计错误,失去了对该段内存的控制,因而造成了内存的浪费。原创 2023-10-02 10:00:00 · 725 阅读 · 14 评论 -
【C++】异常
实际使用中很多公司都会自定义自己的异常体系进行规范的异常管理,因为一个项目中如果所有人随意抛异常,那么外层的调用者基本就没办法玩了,所以实际中都会定义一套继承的规范体系。这样大家抛出的都是继承的派生类对象,捕获一个基类就可以了。下面是一个简单的异常体系,我们用随机数来模拟异常错误。// 服务器开发中通常使用的异常继承体系public:, _id(id){}protected:int _id;// Sql相关的错误public:{}return str;原创 2023-09-15 10:00:00 · 647 阅读 · 15 评论 -
【C++】C++11新特性 function
std::function在头文件// 类模板原型如下模板参数说明:Ret: 被调用函数的返回类型Args…:被调用函数的形参如果我们要包装一个函数只要这样书写,包装后定义出的对象使用的还是包装前的可调用对象。function<返回值(参数,参数,参数...)>上面的代码经过包装器包装,模板只会生成一份函数int main()// 对函数名进行包装// 对函数对象进行包装// 对lamber表达式进行包装return 0;可以看出通过function。原创 2023-09-08 10:00:00 · 358 阅读 · 16 评论 -
【C++】C++多线程库的使用
多线程最主要的问题是共享数据带来的问题(即线程安全)。如果共享数据都是只读的,那么没问题,因为只读操作不会影响到数据,更不会涉及对数据的修改,所以所有线程都会获得同样的数据。但是,当一个或多个线程要修改共享数据时,就会产生很多潜在的麻烦。例如下面的程序,对一个变量进行累加,如果是单线程计算结果一定没有问题,但是对于多线程计算结果就有问题了。i < num;i < num;原创 2023-09-12 10:00:00 · 994 阅读 · 21 评论 -
【C++】C++11新特性 可变参数模板
C++11的新特性可变参数模板能够让你创建可以接受可变参数的函数模板和类模板,相比C++98/03,类模版和函数模版中只能含固定数量的模版参数,可变模版参数无疑是一个巨大的改进。然而由于可变模版参数比较抽象,使用起来需要一定的技巧,所以这块还是比较晦涩的。本章我们只介绍一些基础的可变参数模板特性。下面就是一个基本可变参数的函数模板// Args是一个模板参数包,args是一个函数形参参数包// 声明一个参数包Args...args,这个参数包中可以包含0到任意个模板参数。{}上面的参数Args。原创 2023-09-05 10:00:00 · 363 阅读 · 13 评论 -
【C++】C++11新特性 lambda表达式
随着C++语法的发展,人们开始觉得上面的写法太复杂了,每次为了实现一个算法,都要重新去写一个类,如果每次比较的逻辑不一样,还要去实现多个类,特别是相同类的命名,这些都给编程者带来了极大的不便。这样写,我们没有必要再为函数或函数对象起名而烦恼,而且也不用当我们看不太懂其中的含义时去跳转到函数定义去看函数是如何实现的,上面我们一眼就能看出比较的方式是什么,也没有必要去写多个仿函数。表达式的处理方式,完全就是按照函数对象的方式处理的,即:如果定义了一个lambda表达式,编译器会自动生成一个类,在该类中重载了。原创 2023-09-01 10:00:00 · 361 阅读 · 5 评论 -
【C++】多态
【C++】多态原创 2023-05-08 10:00:00 · 562 阅读 · 11 评论 -
【C++】继承
【C++】继承原创 2023-05-04 10:00:00 · 1125 阅读 · 28 评论 -
【C++】模板进阶
【C++】模板进阶原创 2023-04-28 10:00:00 · 1476 阅读 · 16 评论 -
【C++】deque的实现原理简单介绍
【C++】deque的实现原理简单介绍原创 2023-04-22 10:00:00 · 4067 阅读 · 31 评论 -
【C++】STL中的容器适配器 stack queue 和 priority_queue 的模拟实现
【C++】STL中的容器适配器 stack queue 和 priority_queue 的模拟实现原创 2023-04-19 10:00:00 · 1173 阅读 · 28 评论 -
【C++】反向迭代器的设计
【C++】反向迭代器的设计原创 2023-04-25 10:00:00 · 1191 阅读 · 30 评论 -
【C++】list的模拟实现
【C++】list的模拟实现原创 2023-04-16 10:00:00 · 452 阅读 · 25 评论 -
【C++】vector的模拟实现
【C++】vector的模拟实现原创 2023-04-13 10:00:00 · 548 阅读 · 21 评论 -
【C++】vector的使用 以及 迭代器失效问题
【C++】vector的使用原创 2023-04-10 09:39:50 · 1895 阅读 · 21 评论 -
【C++】STL 标准模板库
STL(standard template libaray-标准模板库):是C++标准库的重要组成部分,不仅是一个可复用的组件库,而且是一个包罗数据结构与算法的软件框架。原创 2024-03-27 10:55:44 · 629 阅读 · 2 评论 -
【C++】string类的模拟实现
string类的模拟实现原创 2023-04-03 10:00:00 · 404 阅读 · 21 评论 -
【C++】string类的使用介绍
C++标准模板库STL (一) string类的使用详解原创 2023-03-12 14:07:06 · 822 阅读 · 14 评论 -
【C++】模板初阶
【C++】模板初阶原创 2023-02-24 14:30:00 · 2148 阅读 · 14 评论 -
【C++】初识C&C++内存管理
初识C&C++内存管理原创 2023-02-21 22:04:41 · 855 阅读 · 22 评论 -
【C++】类与对象 (四)初始化列表 static成员 友元 内部类 匿名对象 拷贝对象时的一些编译器优化
【C++】类与对象 (四)初始化列表 static成员 友元 内部类 匿名对象 拷贝对象时的一些编译器优化原创 2023-02-18 10:31:01 · 1093 阅读 · 18 评论 -
【C++】类与对象(三) 运算符重载 赋值重载 取地址及const取地址操作符重载
【C++】类与对象 赋值重载,取地址重载,及const取地址操作符重载 运算符重载原创 2023-02-15 23:28:00 · 1094 阅读 · 23 评论 -
【C++】类与对象(二) 构造函数 析构函数 拷贝函数
【C++】类与对象(二)原创 2023-02-12 23:00:38 · 1292 阅读 · 14 评论 -
【C++】类与对象(一)类的定义 访问限定符 类的实例化 this指针
【C++】C++入门 类与对象(一)原创 2023-02-10 14:00:00 · 1954 阅读 · 8 评论 -
【C++】nullptr C++中的空指针(C++11)
【C++】nullptr C++中的空指针(C++11)原创 2023-02-09 06:00:00 · 2136 阅读 · 6 评论 -
【C++】基于范围的for循环 (C++11)
【C++】基于范围的for循环 (C++11)原创 2023-02-08 18:00:00 · 2430 阅读 · 6 评论 -
【C++】C++入门 auto关键字详解(C++11)
【C++】C++入门 auto关键字详解(C++11)原创 2023-02-07 18:00:00 · 10822 阅读 · 14 评论 -
【C++】C++入门 内联函数详解
C++入门 内联函数详解原创 2023-02-06 18:59:22 · 493 阅读 · 7 评论 -
【C++】C++入门 引用详解 带你由浅入深理解引用
C++入门 引用详解 带你由浅入深理解引用原创 2023-02-05 15:00:00 · 1876 阅读 · 12 评论 -
【C++】C++入门 函数重载
C++入门 函数重载详解原创 2023-02-04 17:53:16 · 631 阅读 · 6 评论 -
【C++】C++入门 缺省参数
C++入门 缺省参数原创 2023-02-03 06:00:00 · 321 阅读 · 11 评论 -
【C++】C++入门 命名空间 及输入与输出
C++入门 命名空间 及输入与输出原创 2023-02-02 13:19:31 · 1205 阅读 · 14 评论