96SEO 2026-02-23 15:22 9
为了提高效率引入了右值引用及移动语义这个概念不太好理解需要仔细研究一下下文会一并讲讲左值、右值、左值引用、右值引用、const

语言开始就有左值、右值这两个名词当时的用途也很简单就是帮助记忆左值可以位于赋值语句的左侧而右值不能。
的表达式也只有左值和右值大体也是相似的意思。
简单的理解有地址内存位置的对象就是一个左值比如
是右值它是个字面值没有地址。
有时候左值可以作为右值这时候用的是它的值比如这样int
所以可以简单的归纳一下当一个对象被用作右值时用的是对象的值内容当对象被用作左值时用的是对象的地址内存位置。
[1]
内置解引用运算符、下标运算符、迭代器解引用运算符、stringvector的下标运算符运算对象是左值运算结果也是左值。
内置类型和迭代器的递增递减运算符运算对象是左值运算结果前置版本是左值后置版本是右值。
所以建议是除非必须不要使用递增递减的后置版本它们生成了临时变量是一种浪费。
之前引用都是左值引用。
左值引用就相当于给一个左值对象取一个别名。
对象指针可以只声明不初始化但左值引用都不行。
左值引用必须引用一个已经存在的对象必须定义时初始化像这样:
引用是一种特殊的左值引用与常规左值引用的区别在于它可以绑定到临时对象
只是它的类型它本质是上一个左值它是有地址内存位置的这点很容易犯错int
返回的是右值虽然可以但项目中不要这么写容易被别人打上面例子中要特别注意的情况是string
是一个左值的事实了它是地址内存位置的变量。
再举一个例子void
简单的说右值引用的目的在于提高运行效率把对象复制变成对象移动。
中是通过移动构造函数和移动赋值运算符来实现的这两个函数与拷贝构造函数和拷贝赋值运算符是相对的。
前者的参数是右值引用而后者的参数是左值引用。
如果没有定义移动函数或者源对象不是右值用一个对象给另一个对象初始化或赋值调用的都是拷贝函数。
如果定义了移动函数并且源对象是右值用一个对象给另一个对象初始化或赋值调用的都是移动函数。
内存也不拷贝数据直接把源对象的内存数据拿来用其代价往往只是一些指针变量的赋值。
显而易见如果有比较多的内存需要拷贝移动对象的效率是更高很多的。
源码可在此找到https://github.com/antsmallant/antsmallant_blog_demo/tree/main/blog_demo/modern-cpp
endl;test_copy_constructor();cout
endl;test_copy_assign_operator();cout
endl;test_move_constructor();cout
endl;test_move_assign_operator();return
成功了关于移动构造的测试失败了它压根没调用移动构造函数。
怎么回事
Optimization返回值优化这个我们下文再具体讲讲为了避免这种优化对于我们测试的影响我们可以给编译器传递一个选项暂时禁用这种优化修改一下编译命令
}最精准的分析需要看汇编代码但汇编有点复杂这里先不看等下篇文章讲
如果我们没有自己写拷贝构造函数或拷贝赋值运算符那么编译器会帮我们生成默认的。
一个类没有定义任何版本的拷贝构造函数、拷贝赋值运算符、析构函数类的每个非静态成员都可以移动
第1点应该是确保系统可以生成符合程序员需要的移动函数如果代码中定义了那三种函数说明程序员有自己控制复制或释放的倾向这时候编译器就不默认生成了。
上面讲移动构造和移动赋值运算符的时候发现由于编译器的优化RVO导致即使我们构造了合适的场景也没能验证移动构造的使用。
test_move_constructor_use_stdmove()
endl;test_move_constructor_use_stdmove();
转换成了一个右值类型的变量所以编译器使用移动构造函数来生成变量
并不完成对象的移动它的作用只是把传递进去的实参转换成一个右值可以理解它是某种
只是完成类型转换真正起作用的是移动构造函数或移动赋值运算符函数在这两个函数中写移动逻辑。
是一种危险的操作调用时必须确认源对象没有其他用户了否则容易发生一些意外的难以理解的状况。
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback