
C++知识点的补充
文章平均质量分 84
1,补充C++系统性学习栏目的边边角角
2,提取C++系统性学习栏目的重点难点
Jason_from_China
非心静无以事明,非心坚无以事破
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
字符串中的第一个唯一字符
【代码】字符串中的第一个唯一字符。原创 2024-12-17 01:00:00 · 418 阅读 · 0 评论 -
字符串相乘
【代码】字符串相乘。原创 2024-12-20 00:45:00 · 890 阅读 · 0 评论 -
字符串相加
【代码】 字符串相加。原创 2024-12-19 00:45:00 · 399 阅读 · 0 评论 -
反转字符串中的单词
【代码】 反转字符串中的单词。原创 2024-12-19 00:15:00 · 340 阅读 · 0 评论 -
反转字符串
【代码】 反转字符串。原创 2024-12-18 00:30:00 · 419 阅读 · 0 评论 -
验证回文串
【代码】 验证回文串。原创 2024-12-18 00:30:00 · 435 阅读 · 0 评论 -
字符串最后一个单词的长度
字符串最后一个单词的长度_牛客题霸_牛客网。原创 2024-12-17 00:15:00 · 449 阅读 · 0 评论 -
仅仅反转字符串
isalpha:用于判断一个字符是否为字母,包括大写字母(原创 2024-12-16 19:12:55 · 140 阅读 · 0 评论 -
string模拟实现的拓展讲解-string里面swap为什么有三个-拷贝构造和赋值的另类实现
在C++库里面,是有一个swap的,在string里面是有两个swap的,所以我们就会很纳闷,为什么会出现三个交换,接下来我们会进行讲解。实现拷贝构造是有点麻烦的,所以我们还有一种拷贝构造的写法,那就是可以直接实现构造再拷贝,这里是基于swap的逻辑进一步实现的。赋值的实现我们可以基于swap和拷贝构造进行实现,但是和拷贝构造还有点不一样,可以进一步进行简化。原创 2024-11-13 21:44:02 · 1096 阅读 · 0 评论 -
string模拟实现reserve
扩容这里是可以实现缩容,可以实现扩容,这里主要实现的就是扩容的实现,这里实现缩容的实现。原创 2024-11-09 00:15:00 · 344 阅读 · 0 评论 -
string模拟实现比较大小
模拟实现比较我们主要依赖的是strcmp函数。原创 2024-11-08 00:15:00 · 380 阅读 · 0 评论 -
string模拟实现拷贝构造operator=
取出字符串,这里还是比较简单的,但是这里是有问题的,我们看得出来在C++文档里面取出字符串实际上是取出整个对象,不是取出的只是字符串,所以是需要实现拷贝构造的。原创 2024-11-08 00:15:00 · 885 阅读 · 0 评论 -
string模拟实现find
查找字符串我们可以使用一个库函数来实现,暴力实现的讲解有点复杂,所以我们直接使用strstr的函数实现。原创 2024-11-06 18:22:22 · 475 阅读 · 0 评论 -
string模拟实现迭代器
/const采取const_iterator的方式来区分非const。主要实现的两种迭代器。原创 2024-11-06 18:21:33 · 453 阅读 · 0 评论 -
string模拟实现【】
所以我们实现也得实现两种方式。原创 2024-11-06 18:21:05 · 254 阅读 · 0 评论 -
string模拟实现插入+删除
扩容这里是可以实现缩容,可以实现扩容,这里主要实现的就是扩容的实现,这里实现缩容的实现。这里其实就是复用append,比较简单,直接上代码。原创 2024-11-07 00:15:00 · 1074 阅读 · 0 评论 -
string模拟实现流插入(输出)+流提取(输入)
模拟实现clear的目的是在流提取的时候我们清空之前的数据,然后重新输入使用的,不然就会导致。C++文档里面的参数。原创 2024-11-07 00:15:00 · 610 阅读 · 0 评论 -
string模拟实现构造+析构
这里解释一下namespace,命名空间不仅可以单独给,还可以直接大规模的给,这样我们就可以不用在string.cpp实现的文件里面每次实现接口都需要 Test::string::接口。析构函数的实现是比较简单的,这里只需要直接析构就可以,因为我们创建空间的时候我们都是采取数组的形式创建的空间,所以我们析构的时候,我们直接数组的形式析构就可以。这一种方案是一种不完整方案,是不合适的方案,我是用来对比讲解使用的,所以可以看,可以不看,这里实现的无参数构造。原创 2024-11-06 18:15:47 · 1047 阅读 · 0 评论 -
C++ operator new和operator delete的深入讲解
关于operator new和operator delete我们需要明确一个概念,这两个都是一个函数,和malloc,free一样都是一个函数,但是这里需要明确的是,这里只是类似,不是一样。原创 2024-10-17 00:30:00 · 907 阅读 · 0 评论 -
C++ new的使用+delete的使用
2,从链表就可以看出,简单化了,malloc还需要强制类型转化一下,再sizeof一下。1,malloc这里可以不需要初始化,但是new这里是需要初始化的。原创 2024-10-16 00:15:00 · 667 阅读 · 0 评论 -
C++内存管理方式new,delete, operator new,operator delete的深入讲解
C 语言内存管理方式在 C++ 中可以继续使用,但有些地方就无能为力,而且使用起来比较麻烦,因此 C++ 又提出了自己的内存管理方式:通过 new 和 delete 操作符进行动态内存管理。关于operator new和operator delete我们需要明确一个概念,这两个都是一个函数,和malloc,free一样都是一个函数,但是这里需要明确的是,这里只是类似,不是一样。原创 2024-10-16 00:15:00 · 943 阅读 · 0 评论 -
C++ 内存分布情况
在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。原创 2024-10-15 00:15:00 · 470 阅读 · 0 评论 -
Visual Studio关于C++ 对象拷贝时的编译器的优化
传值返回是不能返回已经销毁的对象,一般都是返回临时对象。传值返回是会产生拷贝的。原创 2024-10-15 00:30:00 · 603 阅读 · 0 评论 -
C++ 匿名对象(没有名字的对象,类似于临时对象)
用类型(实参)定义出来的对象叫做匿名对象,相比之前我们定义的类型对象名(实参)定义出来的叫有名对象匿名对象生命周期只在当前一行,一般临时定义一个对象当前用一下即可,就可以定义匿名对象。原创 2024-10-14 00:30:00 · 219 阅读 · 0 评论 -
C++ 内部类
如果一个类定义在另一个类的内部,这个内部类就叫做内部类。内部类是一个独立的类,跟定义在全局相比,他只是受外部类类域限制和访问限定符限制,所以外部类定义的对象中不包含内部类。内部类默认是外部类的友元类。内部类本质也是一种封装,当 A 类跟 B 类紧密关联,A 类实现出来主要就是给 B 类使用,那么可以考虑把 A 类设计为 B 的内部类,如果放到 private/protected 位置,那么 A 类就是 B 类的专属内部类,其他地方都用不了。原创 2024-10-10 00:15:00 · 823 阅读 · 0 评论 -
C++ 友元函数
友元提供了一种突破类访问限定符封装的方式,友元分为:友元函数和友元类,在函数声明或者类声明的前面加 friend,并且把友元声明放到一个类的里面。外部友元函数可访问类的私有和保护成员,友元函数仅仅是一种声明,他不是类的成员函数。友元函数可以在类定义的任何地方声明,不受类访问限定符限制。一个函数可以是多个类的友元函数。友元类中的成员函数都可以是另一个类的友元函数,都可以访问另一个类中的私有和保护成员。友元类的关系是单向的,不具有交换性,比如 A 类是 B 类的友元,但是 B 类不是 A 类的友元。原创 2024-10-10 00:15:00 · 444 阅读 · 0 评论 -
C++ static静态
这里我使用vs编译器,vs编译器不支持可边长数组,所以代码有点不一样。原创 2024-10-09 00:15:00 · 924 阅读 · 0 评论 -
C++ 隐式类型转换
• C++支持内置类型隐式类型转换为类类型对象,需要有相关内置类型为参数的构造函数。• 构造函数前面加 explicit 就不再支持隐式类型转换。• 类类型的对象之间也可以隐式转换,需要相应的构造函数支持。原创 2024-10-09 00:15:00 · 852 阅读 · 0 评论 -
构造函数(初阶+进阶)
默认成员函数就是用户没有显式实现,编译器会自动生成的成员函数称为默认成员函数。一个类,我们不写的情况下编译器会默认生成以下 6 个默认成员函数,需要注意的是这 6 个中最重要的是前 4 个,最后两个取地址重载不重要,我们稍微了解一下即可。其次就是 C++11 以后还会增加两个默认成员函数,移动构造和移动赋值,这个我们后面再讲解。默认成员函数很重要,也比较复杂,我们要从两个方面去学习。构造函数是特殊的成员函数,原创 2024-10-08 15:11:50 · 1324 阅读 · 0 评论 -
C++-再探构造函数(进阶)
来到类和对象最后一个章节,这里的难度已经极大程度的降低了之前我们实现构造函数时,初始化成员变量主要使用函数体内赋值,构造函数初始化还有一种方式,就是初始化列表,初始化列表的使用方式是以一个冒号开始,接着是一个以逗号分隔的数据成员列表,每个 “成员变量” 后面跟一个放在括号中的初始值或表达式。每个成员变量在初始化列表中只能出现一次,语法理解上初始化列表可以认为是每个成员变量定义初始化的地方。引用成员变量,const 成员变量,没有默认构造的类类型变量,必须放在初始化列表位置进行初始化,否则会编译报错。原创 2024-10-08 15:10:13 · 952 阅读 · 0 评论 -
日期类的实现- 计算日期之间相差多少天-解决单参数构造
【代码】日期类的实现- 计算日期之间相差多少天-解决单参数构造。原创 2024-09-27 12:51:40 · 501 阅读 · 0 评论 -
C++ &运算符重载
运算符重载:取地址运算符重载分为普通取地址运算符重载和const取地址运算符重载,一般这两个函数编译器自动生成的就可以够我们用了,不需要去显示实现。除非一些很特殊的场景,比如我们不想让别人取到当前类对象的地址,就可以自己实现一份,胡乱返回一个地址。原创 2024-09-25 14:31:04 · 372 阅读 · 0 评论 -
C++ const成员函数
const在星号左边 修饰的是指向的内容const在星号的右边 修饰的是指针本身,但是实参修饰指针的const不存在权限问题只有指向内容的const才有权限问题。原创 2024-09-25 14:13:04 · 1258 阅读 · 0 评论 -
C++ 运算符重载+赋值运算符重载
当运算符被用于类类型的对象时,C++ 语言允许我们通过运算符重载的形式指定新的含义。C++ 规定类类型对象使用运算符时,必须转换成调⽤对应运算符重载,若没有对应的运算符重载,则会编译报错。运算符重载是具有特殊名字的函数,他的名字是由 operator 和后面要定义的运算符共同构成。和其他函数一样,它也具有其返回类型和参数列表以及函数体。重载运算符函数的参数个数和该运算符作用的运算对象数量一样多。原创 2024-09-20 00:30:00 · 1394 阅读 · 0 评论 -
C++ 赋值运算符重载
赋值运算符重载的特点:成员函数:赋值运算符重载必须定义为类的成员函数。参数:建议将参数声明为const类型的类引用,以避免不必要的拷贝。返回值:应有返回值,且建议为当前类类型的引用,这样可以支持连续赋值操作,并提高效率。如果没有显式实现赋值运算符重载,编译器会提供一个默认实现。默认赋值运算符对内置类型成员变量执行值拷贝或浅拷贝。对自定义类型成员变量,会调用其赋值运算符重载函数。对于像Date这样只有内置类型成员的类,编译器自动生成的赋值运算符通常足够使用。对于像Stack。原创 2024-09-20 00:45:00 · 863 阅读 · 0 评论 -
C++ 运算符重载
当运算符被用于类类型的对象时,C++ 语言允许我们通过运算符重载的形式指定新的含义。C++ 规定类类型对象使用运算符时,必须转换成调⽤对应运算符重载,若没有对应的运算符重载,则会编译报错。运算符重载是具有特殊名字的函数,他的名字是由 operator 和后面要定义的运算符共同构成。和其他函数一样,它也具有其返回类型和参数列表以及函数体。重载运算符函数的参数个数和该运算符作用的运算对象数量一样多。原创 2024-09-19 00:30:00 · 1082 阅读 · 1 评论 -
C++ 类的默认成员函数- 拷贝构造函数
默认成员函数就是用户没有显式实现,编译器会自动生成的成员函数称为默认成员函数。一个类,我们不写的情况下编译器会默认生成以下 6 个默认成员函数,需要注意的是这 6 个中最重要的是前 4 个,最后两个取地址重载不重要,我们稍微了解一下即可。其次就是 C++11 以后还会增加两个默认成员函数,移动构造和移动赋值,这个我们后面再讲解。默认成员函数很重要,也比较复杂,我们要从两个方面去学习。原创 2024-09-19 00:15:00 · 785 阅读 · 0 评论 -
C++ 类的默认成员函数-析构函数
默认成员函数就是用户没有显式实现,编译器会自动生成的成员函数称为默认成员函数。一个类,我们不写的情况下编译器会默认生成以下 6 个默认成员函数,需要注意的是这 6 个中最重要的是前 4 个,最后两个取地址重载不重要,我们稍微了解一下即可。其次就是 C++11 以后还会增加两个默认成员函数,移动构造和移动赋值,这个我们后面再讲解。默认成员函数很重要,也比较复杂,我们要从两个方面去学习。原创 2024-09-18 03:15:00 · 1755 阅读 · 0 评论 -
C++ 类的默认成员函数-构造函数(初阶)
默认成员函数就是用户没有显式实现,编译器会自动生成的成员函数称为默认成员函数。一个类,我们不写的情况下编译器会默认生成以下 6 个默认成员函数,需要注意的是这 6 个中最重要的是前 4 个,最后两个取地址重载不重要,我们稍微了解一下即可。其次就是 C++11 以后还会增加两个默认成员函数,移动构造和移动赋值,这个我们后面再讲解。默认成员函数很重要,也比较复杂,我们要从两个方面去学习。构造函数是特殊的成员函数,原创 2024-09-18 02:45:00 · 1545 阅读 · 0 评论 -
C++ 类域+类的对象大小
类定义了一个新的作用域,类的所有成员都在类的作用域中,在类体外定义成员时,需要使用作用域操作符指明成员属于哪个类域。类域影响的是编译的查找规则,下面程序中Init如果不指定类域Stack,那么编译器就把Init当成全局函数,那么编译时,找不到array等成员的声明/定义在哪里,就会报错。指定类域Stack,就是知道Init是成员函数,当前域找不到的array等成员,就会到类域中去查找。原创 2024-09-17 00:30:00 · 477 阅读 · 0 评论