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

产品发布网站的装饰怎么做菏泽地网站seo

产品发布网站的装饰怎么做,菏泽地网站seo,网站备案 取名资讯通不过,WordPress修改模板文章目录 概述左值右值右值引用左值和右值的互换 小结 概述 左值和右值属于2中不同的表达式类型;它们在表达式中扮演不同的角色,特别是在赋值操作和函数参数传递中。 左值 定义:左值是指那些在内存中有确定位置的表达式,可以出…

文章目录

  • 概述
    • 左值
    • 右值
    • 右值引用
    • 左值和右值的互换
  • 小结

概述

左值和右值属于2中不同的表达式类型;它们在表达式中扮演不同的角色,特别是在赋值操作和函数参数传递中。

左值

定义:左值是指那些在内存中有确定位置的表达式,可以出现在赋值表达式的左侧,即可以被赋值。
特征:
左值可以出现在赋值操作的左侧,也可以出现在函数的参数中(如果函数参数是引用类型)。

关键点:表达式左边,可以被赋值可以推导出来;函数参数+参数是引用类型

右值

==定义:右值是指那些没有存储在内存中,或者没有持久存储位置的表达式。==它们通常表示临时值或字面量。
特征:右值通常不能出现在赋值操作的左侧,但C++11引入了右值引用(rvalue reference),允许右值出现在赋值操作的左侧,并且可以用于实现移动语义(move semantics)。

关键点:右值一般在表达式右边。

右值引用

定义:C++11引入了右值引用,用双写的&&表示,它允许程序员更有效地处理右值。
用途:

  1. 移动语义:允许临时对象的资源被“移动”到另一个对象中,而不是进行复制。一般用std::move来实现
  2. 完美转发:在模板编程中,可以转发参数的值类别(左值或右值)。 这个一般用std::forward来实现

示例1(移动语义):

#include <iostream>
#include <vector>class ResourceHolder {
public:ResourceHolder(int size) : data(new int[size]) {std::cout << "ResourceHolder created with size " << size << std::endl;}~ResourceHolder() {std::cout << "ResourceHolder destroyed" << std::endl;delete[] data;}// Move constructorResourceHolder(ResourceHolder&& other) {data = other.data;other.data = nullptr;}// Copy constructor (deleted)ResourceHolder(const ResourceHolder&) = delete;// Move assignment operatorResourceHolder& operator=(ResourceHolder&& other) {if (this != &other) {delete[] data;data = other.data;other.data = nullptr;}return *this;}// Copy assignment operator (deleted)ResourceHolder& operator=(const ResourceHolder&) = delete;private:int* data;
};int main() {ResourceHolder largeResource(1024);std::vector<ResourceHolder> resources;// 使用 std::move 将 largeResource 移动到 vector 中resources.push_back(std::move(largeResource));// largeResource 现在是一个空的 ResourceHolder 对象return 0;
}

示例1(完美转发):

#include <utility>
#include <iostream>// 假设这是我们要转发参数的目标函数
void process(int& i) {std::cout << "process(int&) called with " << i << std::endl;
}void process(int&& i) {std::cout << "process(int&&) called with " << i << std::endl;
}// 模板函数,使用 std::forward 来转发参数
template<typename T>
void wrapper(T&& arg) {process(std::forward<T>(arg));
}int main() {int a = 5;wrapper(a);  // a 是左值,调用 process(int& i)wrapper(10); // 10 是右值,调用 process(int&& i)
}

左值和右值的互换

常量左值:通过const关键字可以创建一个常量左值,它不能被赋值。
右值转换为左值:通过赋值操作,右值可以转换为左值。例如,int &&a = 10; 这里的10是一个右值,但通过赋值操作,a成为了一个左值引用。

小结

本篇主要写了一个新的概念,右值引用;左值右值是一直存在的,只不过引入了一个右值引用,然后多了一个左值转成右值(一般用std::move),还多了一个完美转发(一般用std::forward)。例子仅供参考,理解概念使用。还是先把概念搞明白,然后才好理解;感兴趣可以一起学习学习。概念这东西,很多人都不喜欢,却都逃不掉,多看几遍就好了。OK,翻篇。

http://www.dinnco.com/news/78856.html

相关文章:

  • 网站设计的优缺点广州seo网站推广公司
  • 哪个网站教做ppt模板竞价如何屏蔽恶意点击
  • 大庆门户网站国家最新新闻
  • 佛山市城乡住房建设局网站首页搜狗指数官网
  • 织梦网站栏目设计全网营销一站式推广
  • ps做网站要多大seo站外优化最主要的是什么
  • 网站地图怎么使用推广渠道有哪些
  • 猎头网站怎么做磁力搜索神器
  • 成都企业网站建设及公司ppt百度代运营
  • 无锡网站建设企业在线注册免费域名
  • 建立企业网站500个游戏推广群
  • 福州网站设计招聘网站建站网站
  • dede 企业网站模板郑州百度搜索优化
  • 购买东西网站怎么做北京核心词优化市场
  • vs做的网站项目可以改名字吗关键词林俊杰免费听
  • 下列不能反应企业网站建立网络关键词拓展工具有哪些
  • 江苏建筑培训网优化二十条
  • php网站开发占比流量宝
  • 成都哪家公司做网站好俄国搜索引擎yandex入口
  • 网站开发服务商网络安全培训机构哪家好
  • 手表河北关键词seo排名
  • 个人网站开发电商平台排名
  • 牛商网做的网站怎么样seo优化方法网站快速排名推广渠道
  • 贵阳开发网站实体店引流推广方法
  • 制作网站的商家手机端百度收录入口
  • 网站开发类型抖音推广怎么做
  • 网站pc端和手机端分离怎么做苹果看国外新闻的app
  • 做网站要有什么功能百度发布信息的免费平台
  • 欧洲一卡2卡3卡4卡高清免费东莞seo顾问
  • 莞城网站仿做推广专员