C++
文章平均质量分 75
王某民
这个作者很懒,什么都没留下…
展开
-
C++ string类(你想要的这里都有)
(范围for底层也是使用迭代器实现)(若对于隐藏的this指针不清楚的,可以看下链接的“5.赋值运算符重载”)C++类和对象(中)(构造、析构、拷贝、赋值重载、const成员函数)_c++ const 结构体 拷贝-CSDN博客原创 2024-07-28 17:29:57 · 660 阅读 · 0 评论 -
C++模版初阶
类模板实例化与函数模板实例化不同,类模板实例化需要在类模板名字后跟<>,然后将实例化的类型放在<> 中即可,类模板名字不是真正的类,而实例化的结果才是真正的类。好了今天就到这里啦,下次见~如果帮到你我很荣幸~若有错误欢迎指正批评~~~原创 2024-07-23 21:50:23 · 528 阅读 · 0 评论 -
C/C++内存管理
①②根据①和②的代码截图可以看出,使用C语言的malloc和free,只会申请和释放空间,不会自用构造和析构函数。而使用new和delete,除了申请空间和释放空间外,会自动调用构造和析构函数。【初始化】【匿名对象】new的原理1. 调用operator new函数申请空间2. 在申请的空间上执行构造函数,完成对象的构造delete的原理1. 在空间上执行析构函数,完成对象中资源的清理工作2. 调用operator delete函数释放对象的空间new T[N]的原理。原创 2024-07-19 22:23:55 · 581 阅读 · 0 评论 -
C++类和对象(下)【初始化列表、explicit关键字、Static成员、友元、内部类】
(且该自定义类型成员没有默认构造函数(默认构造函数包含:全缺省构造、无参构造、系统自动生成的构造函数))3.尽量使用初始化列表初始化,初始化列表不管写不写,成员变量都会走一遍列表,再走函数体。同时也可以避免上述的引用类型成员变量、const成员变量、没有默认构造函数的自定义类成员变量初始化时写错位置。4.成员变量在类中声明顺序就是其在初始化列表中的初始化顺序,与其在初始化列表中的先后顺序无关。下图中对成员变量的声明顺序,进行了调换,所以_a1和_a2的结果都为5。原创 2024-07-14 09:35:40 · 1000 阅读 · 0 评论 -
C++类和对象(中)(构造、析构、拷贝、赋值重载、const成员函数)
方法一:提供get,set方法,细心的小伙伴应该已经发现,我在上面的例子中已经有使用get方法了。get、set方式,如果学过java的伙伴就比较熟悉了。方法二:友元(很下面会讲,马上就想知道的伙伴可以马上冲浪一下~~)。方法三;将这个定义在类外的函数重载成成员函数。前面不是说必须有一个类类型参数吗?这边怎么没有呢?在解释这个为什么之前我们讲一个别的东西。调用这个类型的函数的方式有两种(如下图)。原创 2024-05-20 23:19:50 · 1887 阅读 · 0 评论 -
C++类和对象(上)
/ 类体:由成员函数和成员变量组成// 一定要注意后面的分号class为定义类的关键字,ClassName为类的名字,{}中为类的主体,注意类定义结束时后面分号不能省略。类体中内容称为类的成员:类中的变量称为类的属性或成员变量;类中的函数称为类的方法或者成员函数。什么是类?比如人,这就是一个类;五官、四肢、躯干是人的属性(成员属性);这个人能干什么,会什么技能,是这个人的成员函数拥有上述相同属性和技能的人很多,可以具体到某个人,比如说王某明(也就是实例化出一个对象)原创 2024-05-12 20:07:34 · 1498 阅读 · 1 评论 -
C++范围for循环
以往我们使用for循环都是这样的(上图)虽然已经很简单了,但是我们在对于一个有范围的集合而言,特意说明循环范围显得十分的多余,有时还会给错范围,导致错误。于是C++中引入了基于范围的for循环。for循环的括号由冒号“:”分成两个部分,第一个部分是范围用于迭代的变量,第二个部分则表示被迭代的范围。注意:与普通循环类似,可以使用continue来结束本次循环,也可以用break来跳出整个循环。原创 2024-05-06 23:38:12 · 289 阅读 · 0 评论 -
C++auto关键字
C++11中,标准委员会赋予了auto全新的含义即:auto不再是一个存储类型指示符,而是作为一 个新的类型指示符来指示编译器,auto声明的变量必须由编译器在编译时期推导而得。(typeid这个可以查看变量类型)使用auto定义变量时必须对其进行初始化,在编译阶段编译器需要根据初始化表达式来推到auto的实际类型。原创 2024-05-06 16:35:44 · 386 阅读 · 0 评论 -
C++内联函数
以inline修饰的函数叫做内联函数,编译时C++编译器会在调用内联函数的地方展开,没有函数调用建立栈帧的开销,内联函数提升程序运行的效率。没有使用内联函数调用函数的时候,在底层汇编有一个"call',表示对函数进行调用。(如下图所示)如果在上述函数前增加inline关键字将其改成内联函数,在编译期间编译器会用函数体替换函数的调用。原创 2024-05-04 17:34:00 · 314 阅读 · 1 评论 -
C++引用(超级无敌详细版)
但是如果执行“int& rd=d”的话,产生了一个临时变量的常量,常量的权限是只读不可写,但是此时rd的权限是可读可写,产生了权限放大的问题,所以出现了报错。(老婆饼,是一个美好的想象,感觉吃到了幸福,其实老婆饼不是老婆做的,老婆饼里面也没有老婆。因为例子中的a为常量,a的权限只读,而ra的权限是可读可写的,ra身为a的引用,权限不能比a大,产生了权限放大的问题,所以出错。例子中的x为常量,x的权限可读可写,z的权限是只读的,z身为x的引用,z权限没有比x大,所以运行成功。(在下图中,也是错误的,请注意)原创 2024-05-03 18:06:11 · 1822 阅读 · 0 评论 -
C++函数重载
C语言没办法支持重载,因为同名函数没办法区分。而C++是通过函数修饰规则来区分,只要参数不同,修饰出来的名字就不一样,就支持了重载。(ps:如果对函数修饰规则有兴趣的话,可以再多多学习一下。如果对你有帮助的话,我深感荣幸~原创 2024-04-29 15:09:55 · 208 阅读 · 0 评论 -
c++中的缺省参数
缺省参数的概念缺省参数是声明或定义函数时为函数的参数指定一个缺省值。在调用该函数时,如果没有指定实 参则采用该形参的缺省值,否则使用指定的实参。缺省参数的分类1.全缺省参数2.半缺省参数注意:1. 半缺省参数必须从右往左依次来给出,不能间隔着给2. 缺省参数不能在函数声明和定义中同时出现3. 缺省值必须是常量或者全局变量4. C语言不支持(编译器不支持)如果帮助到你了,我会很开心o~欢迎指正批评!下次见~原创 2024-04-29 00:57:35 · 119 阅读 · 0 评论 -
C++输入&输出
② using namespace std展开,标准库就全部暴露出来了,如果我们定义跟库重名的类型/对 象/函数,就存在冲突问题。所以建议在项目开发中使用,像std::cout这样使用时指定命名空间 + using std::cout展开常用的库对象/类型等方式。早期标准库将所有功能在全局域中实现,声明在.h后缀的头文件中,使用时只需包含对应头文件即可,后来将其实现在std命名空间下,为了和C头文件区分,也为了正确使用命名空间,规定C++头文件不带.h;(不包含using namespace std;原创 2024-04-29 00:19:11 · 341 阅读 · 1 评论 -
c++命名空间
(一个工程中的test.h和上面test.cpp中两个wmm1会被合并成一个)原创 2024-04-27 23:10:37 · 400 阅读 · 0 评论