
个人学习笔记
夜空中最亮的星1!
这个作者很懒,什么都没留下…
展开
-
C++模板的局限性和如何解决模板的一些局限性
模板的通用性并不是万能的, 例如: 这时你传入一个自定义类型交换模板,编译器就不知道怎么交换了,编译器就会报错。 这时有两个办法。第一个办法就是重载运算符。这个办法有点low,而且C++的运算符也不少,建议第二种。第二种办法是提供一个具体化模板 这时编译器会优先调用具体化版本实现两个自定义数据类型交换 ...原创 2021-11-26 11:52:56 · 619 阅读 · 0 评论 -
C++的引用函数重载,函数重载遇到默认参数
C++中引用也可以作函数重载的 那么下面图中void fun (int &a)和void fun (const int &a)是如何发生重载的呢编译器会如何区分? 首先引用的条件是被引用的数据在堆区或者栈区,当你int a=10;把a传入时a是一个变量,变量是可读可写的,而const修饰的是只读的不可以写的。所以调用的是void fun (int &a) 当你传入一个常量的话,我们都知道常量是存储在全局区的,也就是说即不在栈区也不在堆区,这不符合引用的条件,那么fun(10)为原创 2021-11-26 11:12:25 · 547 阅读 · 0 评论 -
C++的内存四区
C++程序在执行时,将内存大方向划分成4个区域 代码区:存放函数体的二进制代码,由操作系统进行管理的 全局区:存放全局变量和静态变量以及常量(字符串常量,const修饰的常量) 栈区:由编译器自动分配释放,存放函数的参数值,局部变量等 堆区:由程序员分配和释放,若程序员不释放,在程序结束时由操作系统回收 不同区域存放的数据有着不同的生命周期 程序运行前 在程序编译后生成exe可执行的机器指令,未执行该程序前分为两个区域 代码区:存放CPU执行的机器指令。 代码...原创 2021-11-22 23:25:10 · 152 阅读 · 0 评论