
C++
文章平均质量分 94
裙下的霸气
01010101010
展开
-
特殊类设计
new和delete默认调用的是全局的operator new函数和operator delete函数,但如果一个类重载了专属的operator new函数和operator delete函数,那么new和delete就会调用这个专属的函数。将该类的构造函数设置为私有即可,因为子类的构造函数被调用时,必须调用父类的构造函数初始化父类的那一部分成员,但父类的私有成员在子类当中是不可见的,所以在创建子类对象时子类无法调用父类的构造函数对父类的成员进行初始化,因此该类被继承后子类无法创建出对象。原创 2023-10-24 09:04:02 · 154 阅读 · 3 评论 -
C++智能指针
内存泄漏的问题内存泄漏是指因为疏忽或错误,造成程序未能释放已经不再使用的内存的情况。执行上述代码时,如果用户输入的除数为0,那么div函数中就会抛出异常,这时程序的执行流会直接跳到主函数中的catch块中执行,最终导致func函数中申请的内存资源没有得到释放。利用异常的重新捕获解决对于这种情况,我们可以在func函数中先对div函数中抛出异常进行捕获,捕获后先将之前申请的内存资源释放,然后再将异常重新抛出利用智能指针解决我们使用智能指针试试。原创 2023-10-18 09:04:29 · 204 阅读 · 0 评论 -
STL—— unordered_set、unordered_map的介绍及使用
unordered_set是不按特定顺序存储键值的关联式容器,其允许通过键值快速的索引到对应的元素。在unordered_set中,元素的值同时也是唯一地标识它的key。在内部,unordered_set中的元素没有按照任何特定的顺序排序,为了能在常数范围内找到指定的key,unordered_set将相同哈希值的键值放在相同的桶中。unordered_set容器通过key访问单个元素要比set快,但它通常在遍历元素子集的范围迭代方面效率较低。它的迭代器至少是前向迭代器。原创 2023-09-22 10:58:39 · 385 阅读 · 0 评论 -
C++类型转换
C语言和C++都是强类型语言,如果赋值运算符左右两侧变量的类型不同,或形参与实参的类型不匹配,或返回值类型与接收返回值的变量类型不一致,那么就需要进行类型转换。需要注意的是,只有相近类型之间才能发生隐式类型转换,比如int和double表示的都是数值,只不过它们表示的范围和精度不同。而指针类型表示的是地址编号,因此整型和指针类型之间不会进行隐式类型转换,如果需要转换则只能进行显式类型转换。原创 2023-03-25 08:23:50 · 421 阅读 · 5 评论 -
C++ IO流
使用itoa函数进行转化int a = 10;//将整型的a转化为十进制字符数字存储在字符串arr当中使用sprint函数进行转化int a = 10;//将整型的a转化为字符串格式存储在字符串arr当中虽然itoa函数和sprint函数都能完成转化,但是在两个函数转化时,都需要先给出保存结果的空间,而空间的大小是不太好界定的,除此之外,转化格式不匹配时,可能还会得到错误的结果甚至程序崩溃。在C++中,我们可以使用stringstream类对象来避开此问题。原创 2023-03-24 17:50:44 · 259 阅读 · 6 评论 -
C++11——— 线程库
C++11——线程库原创 2023-03-19 10:52:01 · 1541 阅读 · 3 评论 -
C++11——— 包装器 (1)
C++11包装器原创 2023-03-10 15:56:01 · 605 阅读 · 1 评论 -
C++11 ——— lambda表达式
C++11 ——— lambda表达式原创 2023-03-03 17:16:09 · 668 阅读 · 3 评论 -
C++11 ——— 可变参数模板
C++11 可变参数模板原创 2023-02-28 20:37:25 · 1045 阅读 · 0 评论 -
C++——异常
C++异常原创 2023-02-27 20:44:17 · 469 阅读 · 5 评论 -
C++11 ——— 类的新功能
C++11 ——— 类的新功能原创 2023-02-25 18:47:15 · 638 阅读 · 3 评论 -
C++中map_set和unordered_map_unordered_set的区别及其适用情况
C++中map/set和unordered_map/unordered_set的区别及其适用情况原创 2023-02-24 15:07:33 · 439 阅读 · 4 评论 -
C++11(二)——右值引用和移动语义
C++11右值引用和移动语义原创 2023-01-31 17:42:24 · 553 阅读 · 4 评论 -
C++11(一)
C++11原创 2023-01-28 22:28:35 · 648 阅读 · 3 评论 -
STL—— 用一棵红黑树同时封装出map和set
STL——红黑树封装....原创 2023-01-27 09:55:49 · 597 阅读 · 3 评论 -
STL——set、map、multiset、multimap的介绍及使用
STL——map,set。。。原创 2023-01-20 20:39:35 · 826 阅读 · 1 评论 -
C++多态
C++多态原创 2023-01-10 11:55:41 · 864 阅读 · 3 评论 -
STL——stack和queue(priority_queue)
stack queue原创 2022-12-29 16:39:09 · 444 阅读 · 2 评论 -
STL——list介绍及使用
list介绍原创 2022-12-29 10:22:12 · 884 阅读 · 2 评论 -
list模拟实现
list模拟实现原创 2022-12-27 11:06:05 · 92 阅读 · 4 评论 -
C++继承
C++继承原创 2022-11-16 16:57:18 · 421 阅读 · 4 评论 -
C++函数模板和类模板(基础+进阶)
C++模板原创 2022-11-14 21:09:02 · 620 阅读 · 4 评论 -
vector的模拟实现
C++ vector原创 2022-11-10 15:52:53 · 159 阅读 · 3 评论 -
vector的使用
方式一: 构造一个某类型的空容器。//构造int类型的空容器方式二: 构造一个含有n个val的某类型容器。//构造含有10个2的int类型容器方式三: 拷贝构造某类型容器的复制品。//拷贝构造int类型的v2容器的复制品方式四: 使用迭代器拷贝构造某一段内容。//使用迭代器拷贝构造v2容器的某一段内容注意:该方式也可用于拷贝其他容器的某一段内容。//拷贝构造string对象的某一段内容。原创 2022-11-02 18:30:26 · 3411 阅读 · 4 评论 -
string(下篇)
string类的模拟实现原创 2022-09-11 13:53:16 · 628 阅读 · 2 评论 -
string(上篇)
/隐式类型转换//赋值运算符重载。原创 2022-09-09 19:00:52 · 253 阅读 · 0 评论 -
模板和STL简介
STL(standard template libaray-标准模板库):是C++标准库的重要组成部分,不仅是一个可复用的组件库,而且是一个包罗数据结构与算法的软件框架。PJ版本:由P. J. Plauger开发,继承自HP版本,被Windows Visual C++采用,不能公开或修改,缺陷:可读性比较低,符号命名怪异。SGI 版本:由Silicon Graphics Computer Systems , Inc 公司开发,继承自 HP 版 本。原创 2022-09-06 21:19:53 · 171 阅读 · 0 评论 -
内存管理 (1)
在用new和delete操作内置类型时,和用malloc和free没什么区别,但在操作自定义类型时就不一样了。因为new不仅会开辟空间,还会调用自定义类型的默认构造函数,delete则会调用其析构函数并释放空间,而malloc和free只有开辟空间和释放空间。};// 1、堆上申请空间 A * p1 =(A *) malloc(sizeof(A));return 0;} // 1、释放空间 free(p1);原创 2022-09-02 00:16:49 · 173 阅读 · 0 评论 -
类和对象(三)
日期类对象里有成员,C++是如何认定成员定义的地方(26 27行)——通过初始化列表,无论你是否写出来,都会有初始化列表(18行),只是在初始化列表阶段不对内置类型进行初始化(给了个随机值),对自定义类型进行初始化。在类中,被static修饰的成员是类的静态成员,它们虽能被该类实例化的对象访问,但是它们是该类所有对象共有的成员。转换规则也有限制,编译器只能支持一步的隐式类类型转换,例如:若要将”abc“转换成A类类型,就要先转换成string类型,再转换成A类型,进行两步的类类型转换,编译器不支持。...原创 2022-08-31 20:57:16 · 284 阅读 · 0 评论 -
类和对象(二)
类的6个默认(缺省)成员函数如果一个类中什么成员都没有,简称为空类。空类中真的什么都没有吗?并不是,任何类在什么都不写时,编译器会自动生成以下6个默认成员函数。默认成员函数:用户没有显式实现,编译器会生成的成员函数称为默认成员函数。......原创 2022-08-30 14:59:26 · 968 阅读 · 0 评论 -
类和对象(一)
class className{// 类体:由成员函数和成员变量组成};// 一定要注意后面的分号 class为定义类的关键字,ClassName为类的名字,{}中为类的主体,注意类定义结束时后面分号不能省略。类体中内容称为类的成员:类中的变量称为类的属性或成员变量;类中的函数称为类的方法或者成员函数。原创 2022-08-24 18:20:01 · 356 阅读 · 0 评论 -
C++基础(二)
当在同一行声明多个变量时,这些变量必须是相同的类型,否则编译器将会报错,因为编译器实际只对第一个类型进行推导,然后用推导出来的类型定义其他变量// 该行代码会编译失败,因为c和d的初始化表达式类型不同 }原创 2022-08-21 17:55:20 · 335 阅读 · 0 评论 -
C++基础
欢迎来到C++,众所周知,每学一门新的语言,我们的第一个程序一定是“Hello XXX”学习C++首先注意的是C++是兼容C的。原创 2022-08-18 11:36:27 · 279 阅读 · 0 评论