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

C++面试-auto,auto,auto 的区别

C++面试-auto,auto&,auto &&的区别

顶层const 和底层const

  1. 顶层const 作用于变量本身,该变量不可修改。

  2. 底层const作用 指向或引用的对象,不能通过改变量修改指向的对象。

  3. 基本类型只有顶层const;

  4. 引用只有底层const

  5. 指针的const
    const int* p = &x; // 底层-》左定值(*左边是const,值确定)
    int
    const p = &x;//顶层 -》右定向(**右边是const,指针指向确定)

#include <iostream>
#include <utility>template <typename T>
void fun(T &&t)
{auto &&a = std::forward<T>(t);
}
int main()
{// 1.auto 值类型推导{int a = 1;auto va = a; // intconst int b = a;auto vb = a; // intconst int *p1 = &a;auto ap1 = p1; // const int *int *const p2 = &a;auto ap2 = p2; // int *const char name[] = {"hello"};auto aname = name; // const char *}// auto & 左值引用推导{int a = 1;auto &va = a; // int &const int b = a;auto &vb = a; // const int&const int *p1 = &a;auto &ap1 = p1; // const int *&int *const p2 = &a;auto &ap2 = p2; // int * const &const char name[] = {"hello"};auto &aname = name; // const char &[5]}// auto && 万能引用推导{auto &&a = 1; // int &&}return 0;
}

总结:
区别:
1.推导类型
auto:值类型
auto&:左值引用
auto && :万能引用

2.const 处理
auto:忽略顶层const
auto&:都保留
auto && :都保留

3:数组退化:
auto:数组退化为指针
auto&:都保留
auto && :都保留

4.应用场景:
auto:简单值拷贝
auto&:避免拷贝
auto && :泛型编程 左值-》左值引用 右值-》右值引用

http://www.dtcms.com/a/267715.html

相关文章:

  • 【ESP32】2.多任务处理
  • 相机位姿估计
  • 使用接口测试工具类Postman和浏览器的差异
  • C++ 语言特性31 - 协程介绍(2)
  • 用 Turbo Vision 2 为 Qt 6 控制台应用创建 TUI 字符 MainFrame
  • Redis性能优化
  • 五、Python新特性指定类型用法
  • AI大模型(六)Langchain核心模块与实战(一)
  • 使用LVM和扩展文件系统增加root分区存储容量
  • 信号和槽(4)
  • 3dmax物理材质转换标准材质,物理材质转VR材质,VR材质转标准材质3dmax物理材质转标准材质插件
  • 98.验证二叉搜索树
  • python实现简单的地图绘制与标记20250705
  • 【每天一个知识点】子空间聚类(Subspace Clustering)
  • 零基础保姆级本地化部署文心大模型4.5开源系列
  • Unity文件夹标签 —— FolderTag
  • SpinLock (TTAS) C-A-S 自旋锁实现原理
  • 人工智能学习60-Yolo
  • TCP协议概念和特性
  • cmd 的sftp传输;Conda出现环境问题: error: invalid value for --gpu-architecture (-arch)
  • Kotlin 协程:Channel 与 Flow 深度对比及 Channel 使用指南
  • 《自然语言处理:基于预训练模型的方法》-笔记
  • Java教程——深入学习guava之并发编程
  • 基于matlab的二连杆机械臂PD控制的仿真
  • 2025年5月-植物水分吸收和运输优化算法water uptake and transport-附Matlab免费代码
  • 数字地和模拟地
  • 使用 C++/OpenCV 和 MFCC 构建双重认证智能门禁系统
  • 白皮解读——173页数据安全治理白皮书5.0【附全文阅读】
  • 灵活应对市场波动的智能运营中枢​
  • leetcode918.环形子数组的最大和