栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++11新特性(三)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++11新特性(三)

  1. 将=default用于拷贝控制成员
  2. 使用=default阻止拷贝类对象
    如果我们不希望合成的成员是内联函数应该只对成员的类外定义使用=default,就像对拷贝赋值运算符所作的。
    通过将拷贝构造函数和拷贝赋值运算符定义为删除的函数来阻止拷贝。删除的函数是这样一种函数:我们虽然声明了它们,但不能以任何方式使用它们。在函数的参数列表后面加上=delete来指出我们希望将它定义为删除的。
    析构函数不能是删除的成员。
  3. 用移动类对象代替拷贝类对象
    移动构造函数通常是将资源从给定对象“移动”而不是拷贝到正在创建的对象。
    std::move定义在utility头文件中。当使用move时,直接调用std::move而不是move.
  4. 右值引用
    所谓右值引用就是必须绑定到右值的引用。通过&&而不是&来获得右值引用。右值引用有一个重要的性质——只能绑定到一个将要销毁的对象。因此我们可以自由地将一个右值引用的资源“移动”到另一个对象中。一个左值表达式表示的是一个对象的身份,而一个右值表达式表示的是对象的值。一个右值引用不过是某个对象的另一个名字。对于常规引用是左值引用,不能将其绑定到要求转换的表达式、字面常量或是返回右值的表达式。右值引用有着完全相反的绑定特性:可以将一个右值引用绑定到这类表达式上,但不能将一个右值引用直接绑定到一个左值上。
    返回非引用类型的函数,连同算术、关系、位以及后置递增/递减运算符,都生成右值。我们不能将一个左值引用绑定到这类表达式上,但我们可以将一个const的左值引用或者一个右值引用绑定到这类表达式上。
    左值持久;右值短暂,右值要么是字面常量,要么是在表达式求值过程中创建的临时对象。右值引用只能绑定到临时对象,所引用的对象将要被销毁,该对象没有其他用户。
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1008703.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号