
C++
文章平均质量分 69
记录学习C++过程中比较重要的知识~
念来过倒字名qwq
。
展开
-
【C++】模版与泛型编程
C++模板 函数模板 类模板原创 2024-07-12 11:14:07 · 506 阅读 · 0 评论 -
C/C++内存管理
C/C++内存分布、栈区、堆区、常量区、静态区、malloc/free、new/delete、new[]和delete[]、operator new和operator delete、malloc/calloc/realloc与new的区别、free与delete的区别、内存泄漏、避免内存泄漏、内存泄漏检测工具原创 2024-07-11 11:47:22 · 1718 阅读 · 0 评论 -
【C++】从C到C++、从面向过程到面向对象(类与对象)
类与对象 内联inline与#define宏 引用和指针 nullptr与null auto 缺省参数 函数重载 this指针 默认成员函数 构造函数 析构函数 拷贝构造函数 赋值重载函数 取地址重载函数 const成员函数 const调用的权限方法与缩小 static成员 友元 运算符重载 构造函数初始化列表 explict关键字修饰构造函数 friend友元修饰 内部类 匿名对象 编译器对构造与拷贝构造的优化原创 2024-03-27 12:04:05 · 1055 阅读 · 0 评论 -
【C++】缺省参数
缺省参数是为函数的参数指定一个缺省值,调用该函数时,如果没有指定实参则采用该形参的缺省值。缺省参数分为全缺省和半缺省。原创 2024-03-26 15:11:25 · 297 阅读 · 0 评论 -
【C++】关键字:auto
从C++11开始,auto变成了类型指示符(之前auto并不是这个作用)。使用auto定义变量时必须对其进行初始化,在编译阶段编译器自动推导auto变量的实际类型。因此auto并非是一种“类型”的声明,而是一个类型声明时的“占位符”,编译器在编译期会将auto替换为变量实际的类型。return 10;auto b = a;return 0;原创 2024-03-11 15:02:41 · 475 阅读 · 0 评论 -
【C++】NULL值在C、C++中的歧义
在C++98中,字面常量0既可以是一个整形数字,也可以是无类型的指针(void*)常量,但是编译器默认情况下将其看成是一个整形常量,如果要将其按照指针方式来使用,必须对其进行强转(void *)0。从定义可以看出NULL可能是0,也可能是(void*)0,但C++将NULL看做0,而C将NULL看做(void*)0,测试后也确实如此。而为了解决这一问题,C++11更新了nullptr关键字来代表指针空值。原创 2024-03-11 10:16:14 · 650 阅读 · 0 评论 -
【C++】传引用 VS 传值和传指针
返回变量c的引用,但是c是一个局部变量,执行完Add就将c释放了,这里的释放指的是将c所占内存还给操作系统了。比如说外出旅游住酒店,当退房后你就没有使用的权利了。引用不是新定义一个变量,而是给已存在变量取了一个别名,比如:李逵,在家称为"铁牛",江湖上人称"黑旋风"。当再次调用Add,函数栈帧复用了上一次的栈空间,原来的变量c的空间当然是还存在的,将其修改成7。前面说过引用本质是指针,那么ret其实还是指向这块栈空间的,所以访问到7了。率是非常低下的,尤其是当参数或者返回值类型非常大时,效率就更低。原创 2024-03-10 19:21:03 · 825 阅读 · 0 评论 -
【C++】inline内联函数 VS #define宏
内联只是向编译器发出的一个请求,编译器可以选择忽略这个请求。不同编译器关于inline实现机制可能不同,一般来说内联用于优化。inline不建议声明和定义分离,分离会导致链接错误。因为inline被展开,就没有函数地址了,链接就会找不到。以inline修饰的函数叫做内联函数,编译时C++编译器会在调用内联函数的地方。在debug模式下,展开不生效,需要对编译器进行设置才可以展开。在release模式下,默认展开生效。C++中可以用什么替代宏?inline是一种以。原创 2024-03-09 12:33:24 · 445 阅读 · 0 评论 -
【C++】C语言为什么不能函数重载?
C++支持函数重载的关键在于,编译时拥有独特的函数名修饰规则,编译器不同规则就不同,比如Linux下g++编译器与Windows下的vs编译器的修饰规则就不同。vs编译器的修饰规则较为复杂,g++的修饰规则更清晰(根据函数参数信息修饰)。在链接阶段,链接器会在汇编阶段产生的符号表中寻找函数的地址,然后将这个函数与其地址链接在一起,那么链接时链接器会使用什么函数名去找该函数的地址呢?不同,满足这三个条件中任意一个则构成函数重载,函数重载常用来处理实现功能类似数据类型不同的问题。原创 2024-03-09 12:27:12 · 445 阅读 · 0 评论 -
【C++】命名空间(namespace)
C++命名空间 C语言的命名冲突问题 C语言全局变量和局部变量 C++命名空间解决命名冲突原创 2024-01-21 18:20:11 · 1078 阅读 · 4 评论