百度做网站和推广效果怎么样,wordpress 搭建教程,seo建站收费地震,上海网站空间前言 大家好吖#xff0c;欢迎来到 YY 滴C系列 #xff0c;热烈欢迎#xff01; 本章主要内容面向接触过C的老铁 主要内容含#xff1a; 欢迎订阅 YY滴C专栏#xff01;更多干货持续更新#xff01;以下是传送门#xff01; YY的《C》专栏YY的《C11》专栏YY的《Linux》… 前言 大家好吖欢迎来到 YY 滴C系列 热烈欢迎 本章主要内容面向接触过C的老铁 主要内容含 欢迎订阅 YY滴C专栏更多干货持续更新以下是传送门 YY的《C》专栏YY的《C11》专栏YY的《Linux》专栏YY的《数据结构》专栏YY的《C语言基础》专栏YY的《初学者易错点》专栏YY的《小小知识点》专栏 目录 一.强制生成默认函数的关键字default二.禁止生成默认函数的关键字delete 一.强制生成默认函数的关键字default 根据以上23点我们知道没有实现 析构函数 、拷贝构造、拷贝赋值重载 中的任意一个编译器才会生成默认的移动构造如果我们已经自己生成了三个函数中的某一个这时编译器不再生成默认的移动构造但是我们依旧希望他生成该怎么操作如下面代码场景所示Person(Person p) default; class Person
{
public:Person(const char* name , int age 0):_name(name), _age(age){}Person(const Person p) //我们手动写了拷贝构造:_name(p._name), _age(p._age){}Person(Person p) default; //此时移动构造仍然会生成
private:bit::string _name;int _age;
};
int main()
{Person s1;Person s2 s1;Person s3 std::move(s1);return 0;
}二.禁止生成默认函数的关键字delete 只需在该函数声明加上delete即可该语法指示编译器不生成对应函数的默认版本称 delete修饰的函数为 删除函数 如下面代码场景所示Person(Person p) delete; class Person
{
public:Person(const char* name , int age 0):_name(name), _age(age){}
//此时我们没有写析构函数 、拷贝构造、拷贝赋值重载 编译器理应默认生成移动构造Person(Person p) delete; //此时移动构造不会生成
private:bit::string _name;int _age;
};
int main()
{Person s1;Person s2 s1;Person s3 std::move(s1);return 0;
}