C++基础
文章平均质量分 91
阿然成长日记
学无止境
展开
-
【C++】拷贝构造函数和赋值构造函数有什么区别?及深浅拷贝再深入
最近看见这样一个问题,突然发现自己也回答的不是很清楚,写篇博客复习一下。这个问题中的赋值构造的说法有误:C++中没有“赋值构造函数”,对应的是“赋值操作符重载函数”(operator=函数)拷贝构造函数是一种特殊构造函数,具有单个形参,该形参(常用const修饰)是对该类类型的引用public:MyClass();// 默认构造函数// 拷贝构造函数注意一定是引用。否则会导致无限递归的调用拷贝构造函数。原因:当定义一个新对象并用一个同类型的对象对它进行初始化时,将显式使用拷贝构造函数。原创 2024-08-06 12:06:18 · 966 阅读 · 0 评论 -
【C++11新特性】lambda表达式
本质就是一个局部的匿名函数对象通常用于编写简单的、一次性的函数对象。这种特性使得它们非常适合作为参数传递给高阶函数(接受函数作为参数或返回函数的函数)。原创 2024-07-29 10:31:43 · 344 阅读 · 0 评论 -
【C++11】initializer_list详解!
nitializer_list 是一种C++11新的类型特性,它允许我们以统一的方式初始化对象。它是一个代表数组的轻量级包装器,通常用于构造函数和函数参数中,以允许传递一个初始化元素列表。initializer_list也是一种模板类型。;begin()end()迭代器以及获取区间中元素个数的方法size()保存的只是指向一个常量,无法对其修改C++11允许构造函数和其他函数把初始化列表当做参数。原创 2024-06-18 10:32:30 · 669 阅读 · 0 评论 -
【C++】map和set的基础详解
本篇博客是对C++中的map和set做一个小小的总结,主要是学习之后的知识点,并会不会细节展开太多。后续会慢慢发布更多底层实现模拟等等更深入了解。setset 变量名;其中,类型名可以是 int、double、char、struct,也可以是 STL 容器:vector、set、queue。1.set中只放value,而map必须存放完整的,但set在底层实际存放的还是由构成的键值对。只不过两者相同。2.set中的元素不可以重复(因此可以使用set进行去重)。原创 2024-05-08 18:59:07 · 911 阅读 · 0 评论 -
Debug和Release的区别
在使用VS的时候我们可以直接使用鼠标来进行操作,当前程序以DeBug或者是Release的形式进行运行,那么运行出来的可执行程序版本也是不同的,我们程序员在编写代码后运行一般是使用【DeBug】环境进行运行。因为在企业里写软件项目,将代码写完后程序员自己要做简单的测试,保证代码没有问题当程序员自己测试完没有问题之后,就会将这个可执行程序给到测试人员进行测试,而且会给出自己的单元测试报告。对于测试人员来说所处的模式是【Release】,也就是将来客户要使用的这款软件的发布版本。原创 2024-04-25 15:09:24 · 451 阅读 · 0 评论 -
【STL】迭代器iterator详解
迭代器(iterator)是一种可以遍历容器元素的数据类型。迭代器是一个变量,相当于容器和操纵容器的算法之间的中介。C++迭代器是一种用于遍历容器中元的对象。它提供了一种统一的访问容器元素的方式,无论容器的类型如何,都可以使用相同的语法进行操作。原创 2024-04-15 20:25:17 · 1553 阅读 · 0 评论 -
【C++】为什么vector的地址与首元素地址不同?
比如如果使用动态开辟函数就是涉及到堆区,看到指针就知道指针存在栈区,static静态就存在全局区(静态区),字符串常量就存储在代码段。还记得我们在以前学习C语言数组时讲过&数组名取得就是这个数组元素的首地址,以为就是说取数组名等于取首元素地址。当你创建一个 vector 对象时,会在栈区上分配一个存储 vector 元数据的对象(例如,指向堆区数组的指针和数组的大小)。&vector和&vector[0]得到的两个地址居然不相同,对数组array取变量名地址和取首元素地址的结果是相同的。原创 2024-03-20 23:39:47 · 776 阅读 · 0 评论 -
【C++】STL之string(字符串操作和非成员函数重载接口详解)
STL之string(字符串操作和非成员函数重载接口详解)原创 2024-02-27 16:00:00 · 753 阅读 · 2 评论 -
【C++】STL容器之string(修改操作)
之前我们学习了string类中的有关容量大小,遍历的相关操作。本文将继续学习string类对象的修改函数。原创 2024-02-26 13:39:46 · 1080 阅读 · 0 评论 -
【C++】STL容器之string(迭代器,范围for)
STL容器之迭代器,for循环详解原创 2024-02-22 19:24:31 · 795 阅读 · 0 评论 -
【C++】STL容器之string(默认成员函数和容量函数)
本篇博客,主要学习string类,以及相关的接口详细讲解,第一部分,后续还会有。原创 2024-02-21 23:38:20 · 1059 阅读 · 0 评论 -
【C++】内存管理方式--new/delete
学习完了使用new/delete去操作C++中的内置类型,接下去我们来看看我们要如何去操作一个自定义类型通过下面一个例子,你就会知道C++中的new,delete用起来有多爽了。🐶在之前C语言中学习链表时我们新建结点。由于使用malloc函数,每次新建结点需要进行调用,安全检查等等操作。int val;exit(-1);使用new/delete:并且使用之前所学习过的构造函数初始化列表在开辟出空间的时候就做一个初始化的工作int val;: val(x){}原创 2024-02-15 13:26:18 · 968 阅读 · 0 评论 -
【C++】static静态关键字
static的引入,使用意义,细节,面试题原创 2024-02-14 13:05:11 · 791 阅读 · 0 评论 -
【C++】内存五大区详解
从操作系统的角度来看待内存的分区原创 2024-02-13 21:30:57 · 3310 阅读 · 0 评论 -
【C++】初始化列表--再谈构造函数
以一个冒号开始,接着是一个以逗号分隔的数据成员列表,每个"成员变量"后面跟一个放在括号中的初始值或表达式。原创 2024-02-06 15:32:19 · 1074 阅读 · 0 评论 -
【C++】const关键字的详解!!
const指针原创 2023-12-05 21:56:25 · 1440 阅读 · 20 评论 -
【C++】友元函数
友元函数可以直接访问类的private成员和protect成员,它是定义在类外部的普通函数,不属于任何类,但需要在类的内部声明,声明时需要加。写在类中进行一个声明即可。友元提供了一种突破封装的方式,有时提供了便利。但是友元会增加耦合度,破坏了封装,所以友元不宜多用。友元类的所有成员函数都可以是另一个类的友元函数,都可以访问另一个类中的非公有成员。为了解决类外函数无法访问类中的私有成员变量,我们只需使用友元函数。友元可以是一个函数,该函数被称为友元函数;使用:在函数声明前+原创 2023-12-05 19:52:06 · 642 阅读 · 1 评论 -
【C++】赋值运算符重载
C++为了增强代码的可读性引入了运算符重载。运算符重载是具有特殊函数名的函数,其目的就是让自定义类型可以像内置类型一样可以直接使用运算符进行操作。运算符重载,就是对已有的运算符赋予多重含义,使同一运算符作用于不同类型的数据时产生不同的行为。运算符重载的目的是使得 C++ 中的运算符也能够用来操作对象。例如:两个日期的比较,肯定不能单纯的使用==去比较,==只能运算两个标准类型的值。所以这时我们可以写一个函数来实现日期的比较。并使用运算符重载的方式给这个函数,名命名为‘’.这样我们就可以使用==原创 2023-11-30 14:59:54 · 1013 阅读 · 1 评论 -
【C++】拷贝构造函数,析构函数详解!
内置类型系统会默认生成拷贝构造进行值拷贝,对自定义类型调用它的拷贝构造。类中如果没有涉及资源申请时(例如 new申请空间),拷贝构造函数是否写都可以;一旦涉及到资源申请时,则拷贝构造函数是一定要写的,否则就是浅拷贝。拷贝构造也是构造,是拷贝构造的一个重载。原创 2023-11-23 22:07:30 · 1846 阅读 · 15 评论 -
【C++】构造函数详解
使用类实例化对象时,每一个对象都要进行初始化,都要进行调用初始化函数,这个操作是实例化对象的必要操作,那么有没有更好的方式来简化这个调用操作。于是C++便推出了构造函数构造函数是特殊的成员函数,构造函数千万不要认为它是用来创建对象的,其实构造函数的主要任务并不是开空间创建对象,而是初始化对象。没有构造函数,需要自己手动写初始化函数,如下:class Datapublic:_day = day;int _month;int _day;原创 2023-11-20 18:18:32 · 2193 阅读 · 21 评论 -
【C++】this指针讲解超详细!!!
C++this指针原创 2023-11-11 23:53:45 · 3027 阅读 · 26 评论 -
【C++】类和对象的关系,对象的存储方式以及对象内存的计算
类和对象的关系,对象的存储方式以及对象内存的计算原创 2023-11-09 21:50:31 · 740 阅读 · 26 评论 -
【C++】类和对象(一):什么是面向对象,访问限定符有哪些,类定义细节,结构体和类的关系。
我们刚开始接触计算机这门学科时,我们学习的第一个编程语言就是C语言,C语言是面向过程的一门语言。面向过程是一种编程思想,它以实现功能的函数开发为主,需要详细处理每一个细节,通常以函数的形式来一步一步实现整个功能。这种编程方式更侧重于解决问题的整个过程。public://压栈//出栈类中由成员函数和成员变量组成不要忘记最后的分号。如上面栈的代码,栈的声明和定义全部写在类中。需注意:成员函数如果在类中定义,编译器可能会将其当成内联函数处理。原创 2023-11-08 18:08:04 · 320 阅读 · 17 评论 -
【C++】一篇文章搞懂auto关键字及其相关用法!
在早期C/C++中auto的含义是:使用auto修饰的变量,是具有自动存储器的局部变量,但遗憾的是一直没有人去使用它,大家可思考下为什么?C++11中,标准委员会赋予了auto全新的含义即:auto不再是一个存储类型指示符,而是作为一个新的类型指示符来指示编译器,auto声明的变量必须由编译器在编译时期推导而得。当在同一行声明多个变量时,这些变量必须是相同的类型,否则编译器将会报错,因为编译器实际只对第一个类型进行推导,然后用推导出来的类型定义其他变量。第二行中,c和d为不同类型。报错!原创 2023-11-06 00:36:16 · 858 阅读 · 7 评论 -
【C++】内联函数一看就懂?
内联函数的定义,如何使用,使用细节原创 2023-11-04 17:02:23 · 294 阅读 · 27 评论 -
【C++】引用’&‘的深入解析
🔸那在我们日常的生活中每个人都或多或少存在一个"外号",例如《西游记》中孙悟空就有诸多外号:美猴王,孙行者,齐天大圣等等。🔸那么在C++中,给一个已经存在的变量取别名,这就是引用。由于引用是对已经存在的变量进行取别名,因此使用引用时必须指定变量。int& b;//定义引用类型return 0;如上,没有为b指定变量,系统报错!原创 2023-10-22 19:21:58 · 2160 阅读 · 28 评论 -
【C++】命名空间和using namespace std的注意事项
命名空间和using namespace std的注意事项原创 2023-10-19 19:49:48 · 282 阅读 · 4 评论 -
【C++】命名空间和using namespace std的详解
定义命名空间,需要用到namespace关键字,然后加上一个命名空间的名字,最后花括号{}括起来即可2.1 通常定义在这里插入代码片 namespace A //A的命名空间 {int a = 20;int b = 30;. . . //也可以定义函数 } namespace B //B的命名空间 {int a = 40;int b = 60;2.2 嵌套定义在这里插入代码片 namespace N1 {int a;int b;} namespace N2 //嵌套在N1中 {原创 2023-04-02 10:39:53 · 4042 阅读 · 4 评论