![](https://img-blog.csdnimg.cn/direct/f5460510fa0347fda135a7ea0947e0d7.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
C++那些事儿
文章平均质量分 97
主要涵盖C++的基础知识、进阶技巧、实际应用和最新动态。该专栏的文章内容丰富,包括C++的语法、标准库的使用、算法和数据结构、内存管理等方面的知识。
江池俊
C/C++领域新星创作者,阿里云专家博主,2023新星计划C/C++赛道top1,目前正在学习C、C++、Java、数据库、Linux等,期待与大家一起探索C/C++语言的奇妙世界,共同成就编程之路!
展开
-
【C++那些事儿】C++模板编程入门:构建可重用组件的利器
类模板的定义通常使用template关键字,后面跟随一个或多个类型参数,然后是一个类定义。class 类模板名// 类内成员定义动态顺序表的类模板示例// 动态顺序表// 注意:Vector不是具体的类,是编译器根据被实例化的类型生成具体类的模具public:, _size(0){}// 使用析构函数演示:在类中声明,在类外定义。~Vector();// 注意:类模板中函数放在类外进行定义时,需要加模板参数列表。原创 2024-03-24 16:02:12 · 1839 阅读 · 72 评论 -
【C++那些事儿】C++内存管理 | new和delete的底层原理 | operator new与operator delete函数 | 你听说过定位new吗?| 内存泄露
1、注意:申请和释放单个元素的空间,使用new和delete操作符,申请和释放连续的空间,使用new[]和delete[],注意:匹配起来使用。2.、在申请自定义类型的空间时,new会调用构造函数,delete会调用析构函数,而malloc与free不会3、实际上operator new 是对 malloc 的封装,operator delete 是对 free 的封装(他们的用法是一样的)。4、定位new表达式是在已分配的原始内存空间中(显示)调用构造函数初始化一个对象。原创 2024-03-20 19:41:00 · 2471 阅读 · 97 评论 -
【C++那些事儿】深入理解C++类与对象:从概念到实践(下)| 再谈构造函数(初始化列表)| explicit关键字 | static成员 | 友元
在创建对象时,编译器通过调用构造函数,给对象中各个成员变量一个合适的初始值。构造函数体中的语句只能将其称为赋初值,而不能称作初始化。因为初始化只能初始化一次,而构造函数体内可以多次赋值。成员变量在类中声明次序就是其在初始化列表中的初始化顺序,与其在初始化列表中的先后次序无关。构造函数不仅可以构造与初始化对象,对于单个参数或者除第一个参数无默认值其余均有默认值的构造函数,还具有类型转换的作用。静态成员变量一定要在类外进行初始化。原创 2024-03-13 19:03:14 · 1585 阅读 · 75 评论 -
【C++实战项目】Date日期类 --- 运算符重载的深入探索
本文深入探讨了C++中自定义Date日期类如何运用运算符重载来增强类的功能和使用体验。通过重载输入输出运算符(``),我们实现了日期的便捷输入与格式化输出。同时,通过重载算术运算符(如`+`和`-`),我们为日期类增加了日期加减的直观操作,使日期计算更为简便。原创 2024-03-06 15:10:47 · 1763 阅读 · 88 评论 -
【C++那些事儿】深入理解C++类与对象:从概念到实践(中)| 默认构造函数 | 拷贝构造函数 | 析构函数 | 运算符重载 | const成员函数
对于初始化和清理的默认成员函数内置类型不处理,自定义类型调用对应的构造和析构。对于拷贝复制的默认成员函数内置类型值拷贝,自定义类型调用对应的拷贝构造和赋值重载。原创 2024-03-03 15:27:39 · 1610 阅读 · 82 评论 -
【C++那些事儿】深入理解C++类与对象:从概念到实践(上)| 揭开this指针的神秘面纱
C++编译器给每个“非静态的成员函数“增加了一个隐藏的指针参数,让该指针指向当前对象(函数运行时调用该函数的对象),在函数体中所有“成员变量”的操作,都是通过该指针去访问。只不过所有的操作对用户是透明的,即用户不需要来传递,编译器自动完成原创 2024-02-27 22:51:19 · 2483 阅读 · 73 评论 -
【C++那些事儿】C++入门 | 命名空间 | 缺省参数 | 引用 | 内联函数 | auto关键字 | 范围for循环 | nullptr
C++是在C的基础之上,容纳进去了面向对象编程思想,并增加了许多有用的库,以及编程范式等。作用域方面、IO方面、函数方面、指针方面、宏方面等。为后续类和对象学习打基础。定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后接一对{}即可,{}中即为命名空间的成员。// lzf是命名空间的名字,一般开发中是用项目名字做命名空间名。// 1. 正常的命名空间定义// 命名空间中可以定义变量/函数/类型int val;//2. 命名空间可以嵌套int a;原创 2024-02-25 09:01:40 · 1591 阅读 · 62 评论