![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
文章平均质量分 58
Czyyy_
这个作者很懒,什么都没留下…
展开
-
【C++】拷贝控制
一个类通过定义五种特殊的成员函数来控制对象的拷贝、移动、赋值和销毁这些操作在做什么。拷贝构造函数 拷贝赋值运算符 移动构造函数 移动赋值运算符 析构函数拷贝构造函数拷贝构造函数的第一个参数是自身类型的引用,一般会是一个const引用,且任何额外的参数都有默认值;拷贝构造几种情况下都会被隐式使用,因此拷贝构造不应该是explicit,需要进行类型转换。与合成的默认的构造函数不同,即使定义了拷贝构造函数,编译器也会为我们合成一个拷贝构造函数。一般情况下,合成的拷贝构造函数会将参数的成员逐个原创 2022-05-10 11:47:06 · 273 阅读 · 0 评论 -
【C++】动态内存与智能指针
C++中 内存划分:静态内存:保存局部static对象、类static数据成员、以及定义在任何函数之外的变量; 栈内存:保存定义在函数内的非static对象; 自由空间(堆):存储动态分配的对象,当动态对象不再使用时,需要显示的销毁;智能指针智能指针的行为类似于常规指针,负责自动释放所指向的对象;智能指针模板类:定义在memory头文件中shared_ptr:允许多个指针指向同一个对象; unique_ptr:独占所指的对象; weak_ptr:是一种弱引用,指向shared_pt原创 2022-05-06 11:26:25 · 1043 阅读 · 0 评论 -
【C++】类型转换
隐式转换某些数据类型之间是有关联的,那么程序需要其中一种类型运算对象时,就可以用另一种关联类型的对象或值来代替,即这两种数据类型直接是可以相互转换的;int ival = 3.541 + 3; //编译器可能警告该运算损失了精度上述的代码中,就会发生从 float 向 int 的转换,称作为隐式转换;什么时候会发生隐式转换:大多数表达式中,比int类型小的整形值首先提升为较大的整数类型; 在条件中,非布尔值转换为布尔类型; 初始化过程中,初始值转变成变量的类型;赋值语句中,原创 2022-05-04 17:32:19 · 632 阅读 · 0 评论 -
【C++】lambda表达式
介绍lambda可调用的对象:函数、函数指针、重载了函数调用运算符的类 以及 lambda表达式;形式:[capture list] (parameter list) -> return type { function body }lambda必须使用尾置返回,且不能有默认参数,一个lambda调用的实参数目永远与形参数目相等;如果lambda的函数体包含任何单一 return 语句之外的内容,且未指定返回类型,则返回void。一个lambda只有在其捕获列表中捕获一个它所在函数原创 2022-05-04 16:50:16 · 480 阅读 · 0 评论 -
【C++】函数指针
//比较两个string的长度bool lengthCompare(const string &, const string &);//声明一个指向该函数的指针bool (*pf)(const string &, const string &);*pf 旁边的括号不能省略,如果不写这对括号那么pf是一个返回值为bool指针的函数。使用函数指针当我们把函数名当作一个值来使用时,该函数自动转换为指针,类似于使用内置数组时会自动转换为指针;pf =.原创 2022-05-04 14:30:05 · 229 阅读 · 0 评论 -
【C++】this 和 常量成员函数
引入this假设有一个 Sale_data 类,有成员函数isbn(),total是它的实例对象;成员函数通过一个名为this的额外隐式参数来访问调用它的那个对象,当我们调用一个成员函数时,用请求该函数的对象地址初始化this;total.isbn();//可以等价的认为编译器重写为以下形式:(伪代码)Sale_data::isbn(&total);在成员函数内部,可以直接调用该函数的对象成员,而无需通过成员访问运算符(->),因为this指向的正是这个对象。任何对原创 2022-05-04 09:35:39 · 182 阅读 · 0 评论 -
【C++】const限定符
初始化和constconst对象一旦创建就不能再改变,所以必须初始化;编译器将在编译过程中把用到该变量的地方都替换成对应的值,例如下面的代码编译器会找到所有用到了bufSize的地方用512替换;const int bufSize = 512;初始化常量引用时允许用任意表达式作为初始值,只要该表达式的结果可以转换为引用的类型即可;double dval = 3.14;const int &ri = dval;//实际上执行的是有一个临时变量的存在, 所谓临时量就是当编译原创 2022-05-04 00:46:08 · 91 阅读 · 0 评论