C++
文章平均质量分 71
灿烈♡
这个作者很懒,什么都没留下…
展开
-
深入解析C++智能指针:从auto_ptr到weak_ptr
这篇博客为读者提供了从基础到高级的C++智能指针知识,适合希望深入理解这一重要C++特性的开发者。原创 2023-12-23 12:24:11 · 362 阅读 · 0 评论 -
C++11——包装器
包装器是一种调用类型,本质是类模板。意义:C++中,函数可以有多种实现方法,除了直接实现函数还可以用仿函数和lambda还有类的成员函数。包装器可以对这些调用类进行封装,简化。原创 2023-12-19 15:53:38 · 390 阅读 · 0 评论 -
C++——多态
多态是有继承关系的类对象调用相同的函数,会有不同的结果。例如,普通人买高铁票不打折,学生打75折,儿童免费,这种情况就适合使用多态。原创 2023-10-15 17:30:25 · 114 阅读 · 0 评论 -
C++——模板,template
我们经常会遇到一种情况:用相同的方法处理不同的数据。对于是函数,我们可以用函数重载来解决。虽然重载可以解决这种情况,但还是很繁琐。如果函数重载10次,有一天你突然发现有新的需求,函数需要修改,那你只能把这10个函数依次修改了,麻烦的要死!所以函数模板他来了。函数模板代表了一类函数,函数模板与参数类型无关,在使用时被实例化,根据参数类型产生特定类型的函数版本。函数返回值 函数名 (参数列表)函数体;注:typename可以用class替换,二者基本没有区别。原创 2023-09-18 14:28:23 · 97 阅读 · 0 评论 -
C++——引用
fun2函数返回a时,由于函数栈帧被销毁,会先将a的值传给一个临时变量,再将临时变量传给n,这会涉及两次变量的拷贝。就好比孙悟空有很多外号,例如孙行者,齐天大圣,斗战胜佛,但是它们所指都是孙悟空。同样的,如果齐天大圣大闹天宫,那么孙悟空也大闹天宫,所以引用改变了,相应的变量的值也改变了。引用作函数返回值时,要保证函数调用结束栈帧销毁后,返回的变量不被释放,例如使用静态变量。初步理解:引用相当于给变量取了一个别名,它和引用的变量共用同一块空间。引用作参数可以改变实参的值,与C语言中的指针效果相同。原创 2023-05-26 11:05:13 · 706 阅读 · 0 评论 -
C++——多态底层原理
sizeof(Base)是多少?答案是:8因为Base中除了成员变量_b,还有一个虚函数表_vfptr(当类中有虚函数就会生成),虚函数表的本质是函数指针数组,用来存储虚函数的指针派生类虚函数表是这样生成的:先将基类的虚函数表内容拷贝过来,在把派生类中重写的虚函数的地址覆盖到被重写的虚函数地址上,最后将派生类自己增加的虚函数依次增加到虚表的末尾。原创 2023-10-08 14:07:10 · 1032 阅读 · 0 评论 -
C++——继承
简单记忆:派生类中继承过来的成员的访问权限,是基类成员的访问权限和继承方式中权限最小的,例如,基类private成员通过public继承,二者中private的权限最小,继承的成员在派生类中就是private成员基类和派生类都有自己独立的作用域,如果基类和派生类中有同名的成员函数,注意只需要同名,那么当我们用派生类的对象调用这个函数时,只会调用派生类的函数,基类的函数就被隐藏/重定义了。原创 2023-10-07 13:28:01 · 101 阅读 · 0 评论 -
C++——string使用
rfind如果未给出查找的起始位置,或者起始位置下标越界,会从字符串末尾开始寻找;rfind和find一样,如果未找到目标,就会返回npos。+=运算符重载和append的功能基本相同,append除此之外可以使用迭代器,插入指定数量的字符,但是+=使用更方便。如果pos等于字符串大小,就会返回空字符串;如果pos大于字符串大小,就会抛异常。如果n小于字符串大小时,会将多出的字符直接删除,当n大于字符串大小时,多的空间会用字符c来填充。这个函数是传值返回,需要深拷贝,效率低少用为好。原创 2023-09-03 15:26:19 · 170 阅读 · 0 评论 -
C/C++动态内存管理 ,new和delete
new和delete原创 2023-06-04 11:48:07 · 950 阅读 · 3 评论 -
C++——类和对象
/class是定义类的关键字 name是类名class name//类体:由成员函数(类方法)和成员变量(类属性)组成C语言中的结构体只能定义变量,但是在C++中还可以定义函数,这是因为C++将结构体上升为类int _age;int _score;声明和定义全部放在类体中(函数可能被编译器当作内联函数处理)类的定义和函数声明放在的头文件中,函数的定义放在源文件中,成员函数名前要+类名和" :: "//Person.hint _age;int _score;原创 2023-06-01 19:17:10 · 651 阅读 · 0 评论 -
C++——inline 内联函数
当程序中大量的调用某个函数时,因为每次调用都会为函数建立栈帧,会造成极大开销。C语言中的解决方法就是用宏代替函数。但是,宏也有缺点,例如不可调试,可维护性差,可读性差,没有类安全性检查等。那么在C++中,是怎么解决的呢?原创 2023-05-26 16:45:05 · 82 阅读 · 0 评论 -
C++11——auto
一行定义多个变量时,所有变量必须是相同类型。编译器只对第一个变量的类型做推导,用推导出来的类型定义其他变量。int main()//报错,C++ 对于此实体“auto”类型是int,但之前默示为double//int//int//int。原创 2023-05-26 15:13:43 · 76 阅读 · 0 评论 -
C++——缺省参数和函数重载
C++入门,一文搞定函数原创 2023-04-19 11:43:28 · 167 阅读 · 0 评论 -
C++——输入输出
遇到大型的项目,代码较多,规模较大,将std展开很难容易造成名字冲突的问题,所以推荐在使用时指定命名空间(std::cout)或展开常用的库对象/类型(using std::cout)在日常学习中,直接将std展开即可,更便利;原创 2023-04-19 08:46:44 · 61 阅读 · 0 评论 -
C++——命名空间
命名空间要使用namespace关键字,后面加空间名,再在后面的{ }里写命名空间的成员int rand;char ch;int size;int rand;char ch;int size;//在bt.hpp中定义:int jk;//在test.cpp中定义int rand;char ch;int size;原创 2023-04-18 22:18:52 · 58 阅读 · 0 评论