
C++
文章平均质量分 72
马斯尔果
这个作者很懒,什么都没留下…
展开
-
C++ default、delete、overrride、final声明函数
default:当我们手动创建一个有参构造函数后,编译器不是提供默认的无参构造函数,但是有时候程序中可能会用到,这时候可以使用default声明,让编译器提供默认的构造函数。#include <iostream>using namespace std;class A {public: // A user-defined A(int x){ cout << "This is a parameterized constructor";原创 2021-03-13 16:46:46 · 465 阅读 · 0 评论 -
C++默认构造函数提供机制
C++的构造函数有:默认构造函数析构函数拷贝构造函数拷贝赋值函数移动构造函数移动赋值函数生成这些特殊成员函数(或不生成)的规则比较复杂,每个特殊成员函数有几种不同的状态:隐式声明还是用户声明默认提供还是用户提供正常状态还是删除状态隐式声明的必然是默认提供的;默认提供的才可能被删除;用户提供的也必然是用户声明的。C++默认构造函数是否提供的情况:如果自定义了一个任意的构造函数,系统将不在提供默认无参构造如果自定了一个构造函数,系统还会提供一个拷贝构造如果自定义原创 2021-03-13 15:33:02 · 951 阅读 · 0 评论 -
C++新特性之自动类型推断和初始化列表
一 自动类型推导auto:就是编译器能够根据表达式的类型,自动决定变量的类型(从 C++14 开始,还有函数的返回类型),不再需要程序员手工声明([1])。但需要说明的是,auto 并没有改变 C++ 是静态类型语言这一事实——使用 auto 的变量(或函数返回值)的类型仍然是编译时就确定了,只不过编译器能自动帮你填充而已。例1:容器迭代器类型:// vector<int> v;for (vector<int>::iterator it = v.begin(原创 2021-03-13 14:02:54 · 546 阅读 · 2 评论 -
移动构造函数与拷贝构造函数
一、移动构造函数:定义:所谓移动语义,指的就是以移动而非深拷贝的方式初始化含有指针成员的类对象。简单的理解,移动语义指的就是将其他对象(通常是临时对象)拥有的内存资源“移为已用”。优点:提高执行效率,减少临时变量资源的申请和释放。事实上,对于程序执行过程中产生的临时对象,往往只用于传递数据(没有其它的用处),并且会很快会被销毁。因此在使用临时对象初始化新对象时,我们可以将其包含的指针成员指向的内存资源直接移给新对象所有,无需再新拷贝一份,这大大提高了初始化的执行效率。函数参数:右值引用非 co原创 2021-03-07 11:19:28 · 4445 阅读 · 0 评论 -
C++左值与右值
一、左值与右值的定义: - 一个 lvalue 是通常可以放在等号左边的表达式,左值 - 一个 rvalue 是通常只能放在等号右边的表达式,右值 - 一个 glvalue 是 generalized lvalue,广义左值 - 一个 xvalue 是 expiring lvalue,将亡值 - 一个 prvalue 是 pure rvalue,纯右值 左值 lvalue 是有标识符、可以取地址的表达式,最常见的情况有:变量、函数或数据成员的名字返回左值引用的表达式,如 ++x、x =原创 2021-03-07 11:06:57 · 7495 阅读 · 0 评论