当前位置: 首页 > news >正文

中国建设银行网站对公业务wordpress归档侧边栏按分类

中国建设银行网站对公业务,wordpress归档侧边栏按分类,网站使用方法,专业做汽车的网站C笔记之std::move和右值引用的关系、以及移动语义 code review! 文章目录 C笔记之std::move和右值引用的关系、以及移动语义1.一个使用std::move的最简单C例子2.std::move 和 T&& reference_name expression;对比3.右值引用和常规引用的经典对比——移动语义和拷贝语…

C++笔记之std::move和右值引用的关系、以及移动语义

code review!

文章目录

  • C++笔记之std::move和右值引用的关系、以及移动语义
    • 1.一个使用std::move的最简单C++例子
    • 2.`std::move` 和 `T&& reference_name = expression;`对比
    • 3.右值引用和常规引用的经典对比——移动语义和拷贝语义
    • 4.关于 `data = new char[size + 1];`
    • 5.std::move的使用场景列举

1.一个使用std::move的最简单C++例子

在这里插入图片描述

2.std::moveT&& reference_name = expression;对比

在这里插入图片描述

3.右值引用和常规引用的经典对比——移动语义和拷贝语义

右值引用允许我们利用移动构造函数从临时对象中“窃取”资源,避免不必要的拷贝,从而提高效率。而常规引用则会触发拷贝构造函数,产生一个新的对象副本。

在这里插入图片描述

代码

#include <iostream>
#include <string>class MyString {
public:MyString(const char* str) {size = strlen(str);data = new char[size + 1];strcpy(data, str);std::cout << "Constructor: " << data << std::endl;}// 拷贝构造函数MyString(const MyString& other) {size = other.size;data = new char[size + 1];strcpy(data, other.data);std::cout << "Copy Constructor: " << data << std::endl;}// 移动构造函数MyString(MyString&& other) noexcept {size = other.size;data = other.data;other.size = 0;other.data = nullptr;std::cout << "Move Constructor: " << data << std::endl;}~MyString() {delete[] data;}void printData() const {if (data)std::cout << "Data: " << data << std::endl;elsestd::cout << "Data is empty." << std::endl;}private:size_t size;char* data;
};int main() {MyString str1 = "Hello, World!"; // 调用构造函数MyString str2 = str1;            // 调用拷贝构造函数MyString str3 = std::move(str1); // 调用移动构造函数std::cout << "str1: ";str1.printData(); // 输出空,因为资源已被移动std::cout << "str2: ";str2.printData(); // 输出 "Hello, World!"std::cout << "str3: ";str3.printData(); // 输出 "Hello, World!"return 0;
}

4.关于 data = new char[size + 1];

在C++中,使用以null终止的字符串(C风格字符串)时,需要为字符串的内容分配足够的内存来存储字符,同时还需要一个额外的空间来存储字符串的null终止字符(‘\0’),表示字符串的结束。

例如,考虑字符串 “Hello”,它实际上占用了5个字符的内存,即 ‘H’、‘e’、‘l’、‘l’、‘o’,但为了使其成为一个有效的C风格字符串,需要在字符串的末尾添加一个null终止字符 ‘\0’。

因此,为了正确存储以null终止的字符串,我们需要分配的内存大小应该为字符串的长度加上一个额外的字符来存储null终止字符。这就是为什么在 data = new char[size + 1]; 语句中,使用了 size + 1 来分配足够的内存以容纳字符串内容和null终止字符。

在C++中,通过这种方式分配内存,并将字符存储在数组中,就可以实现以null终止的字符串表示。这种约定允许我们使用标准的C字符串库函数来操作和处理字符串,例如 strcpystrlen 等。

5.std::move的使用场景列举

在这里插入图片描述

http://www.yayakq.cn/news/110666/

相关文章:

  • 企业销售型网站是什么熊掌号如何做网站
  • 建设公司企业网站wordpress更改固定连接后404
  • 织梦 网站网站建设及推广好学习吗
  • 少儿英语做游戏网站推荐最基本的网络营销站点
  • 网站敏感目录漏洞修复种植园网站模板
  • 网站发布服务托管器信誉好的模板网站建设
  • 网站功能建设描述书做网站的公司哪里好
  • 辽宁品牌建设促进会 网站js企业网站模板
  • 做金融网站看那些素材目前做win7系统最好的网站
  • 漯河河南网站建设淮阴区城乡建设局网站
  • 拟定网站建设合同的工作过程记录做网站的原理
  • 东莞seo网站管理手机编程免费软件app
  • 网站服务器 重启网络营销推广方法集锦
  • 网站添加手机站西安网站建设网站
  • 教育学校网站建设ios系统开发
  • 青岛做网站哪个公司好wordpress微信支付购买课程
  • 宜昌网站推广网站建设策划书的主要内容
  • 上海网站建设公司一个网站建设需要多少钱
  • 7c框架 网站建设杭州公司招聘
  • 做网站工具 不懂代码家纺网站建设
  • wordpress给菜单加图标wordpress站点地图优化
  • 恩施做网站旅游门户系统
  • 绵阳优化网站排名网站做m版
  • 网站开分站wordpress更换百度编辑器
  • 漳州北京网站建设榆林网站建设熊掌号
  • 山西房地产网站建设建设网站困难的解决办法
  • 赣州 做网站golang做网站怎么样
  • seo网站排名厂商定制wordpress文章字符插件
  • 专业网站设计流程图江苏住房与城乡建设厅网站
  • 彩票网站开发的宜布网网站谁做的