顶层const与底层const

devtools/2025/1/14 11:08:44/

当一个常量引用绑定到与其本身不同的数据类型时,会生成一个临时量。

例如,有一个const int&(常量引用指向整数),如果用一个double类型的值去初始化它,编译器会创建一个临时的int变量,这个临时变量初始化为double值转换后的结果,然后常量引用绑定到这个临时的int变量。

这是因为引用必须与其绑定的对象类型严格匹配,而常量引用允许绑定到临时量,所以通过生成临时量来完成这种不同类型之间的绑定操作。

顶层 const 名字的由来

  • 可以将数据类型的定义看作是一个层次结构。当 const 直接修饰一个变量本身时,就好像这个 const 是处于这个变量定义的 “顶层”。例如在const int a = 5;中,const是直接加在int类型的变量a上的,从层次角度理解,它是在最外层限制了变量a本身,所以称为顶层 const。

底层 const 名字的由

  • 对于指针和引用相关的 const,它主要约束的是指针或引用所指向或引用的对象。在层次结构中,相对于变量本身,指针或引用所指向的对象处于一个 “底层” 的位置。例如在const int* p;中,const约束的是*p(也就是p所指向的对象),而不是p本身(p本身可以改变指向),这种对所指对象的约束就像在层次结构的底层起作用,所以称为底层 const。

 

  1. 顶层 const(top - level const)

    • 含义:顶层 const 是指对象本身(变量或对象)是常量。对于基本数据类型的变量,如intdouble等,变量本身的值不能被改变。例如const int a = 5;,这里a就是顶层 const,因为a这个变量本身的值不能被修改。
    • 应用场景和示例:在函数参数传递时,如果函数不希望改变传入的参数的值,可以将参数声明为顶层 const。比如
      void printValue(const int num) {std::cout << num << std::endl;}
      ,在这个函数中,num是顶层 const,函数内部不能修改num的值。
  2. 底层 const(low - level const)

    • 含义:底层 const 主要用于指针和引用,它表示指针或引用所指向(或引用)的对象是常量。例如const int* p;,这里p是一个指针,它所指向的int对象是常量,p就是底层 const。这意味着可以改变p本身(让它指向其他对象),但是不能通过p来修改它所指向的对象的值。
    • 应用场景和示例:当函数的参数是一个指向常量的指针或者引用时,如
      void printArray(const int* arr, int size) { for(int i = 0; i < size; ++i) std::cout << arr[i] << " "; std::cout << std::endl;
      }
      ,这里arr是底层 const,函数内部不能通过arr修改数组元素的值,但可以改变arr本身的值(比如让它指向其他数组)。

http://www.ppmy.cn/devtools/150383.html

相关文章

Win11远程桌面怎么设置?

通过Windows自带的远程桌面功能&#xff0c;可以轻松的远程访问另一台电脑。不过&#xff0c;在使用这一功能之前&#xff0c;需要先进行相关的设置。那么&#xff0c;Win11远程桌面怎么设置&#xff1f;接下来&#xff0c;我们将为您提供详细的Win11远程桌面设置步骤。 步骤 …

Python AI教程之十六:监督学习之决策树(7)和其它算法的比较

ML | 逻辑回归与决策树分类 逻辑回归和决策树分类是目前最流行和最基本的两种分类算法。没有哪种算法比另一种更好,而一种算法的优越性通常归功于所处理数据的性质。 我们可以在不同类别上比较这两种算法—— 标准 逻辑回归 决策树分类 可解释性 难以解释 更易于解释 决策…

微服务滚动法布

滚动发布&#xff1a;1.启动新的服务并进行健康检查——2.新服务启动——3.杀老服务-----4.发送curl到nacos下线—5.等待10S-------6.杀老服务 在Nacos中&#xff0c;服务实例的上下线状态是由服务实例自身通过心跳机制与Nacos服务器交互来维持和控制的。当服务实例启动时&…

CAS操作的底层原理(总线锁定机制和缓存锁定机制 )

目录 处理器级别的实现 总线锁定机制 缓存锁定机制 MSEI表示缓存行的四种状态 MESI协议状态转换 CAS操作是不保证可见性的 CAS基本概念 ABA问题的处理 性能考虑 先总结一下&#xff0c;CAS&#xff08;Compare And Swap&#xff09;是一种原子操作&#xff0c;它比较…

相机小孔成像模型与透视变换

0 背景 本文用于记录小孔相机成像的数学模型推导&#xff0c;并讨论特定条件下两个相机之间看到图像的变换关系。 1 小孔成像模型 小孔成像模型如上图所示。物理世界发光点P&#xff0c;经过小孔O投影到物理成像平面&#xff0c;形成像点I’。 简易起见&#xff0c;构造虚拟成…

[Transformer] The Structure of GPT, Generative Pretrained Transformer

The Structure of Generative Pretrained Transformer Reference: The Transformer architecture of GPT models How GPT Models Work

深度学习——pytorch基础入门

一、张量 在PyTorch中&#xff0c;张量是PyTorch中最基本的数据结构。张量可以看作是一个多维数组&#xff0c;可以在GPU上加速运算。PyTorch的张量和Numpy的数组非常类似&#xff0c;但是与Numpy不同的是&#xff0c;PyTorch的张量可以自动地在GPU上进行加速计算。 PyTorch中的…

如何建立写作的护城河

如何建立写作的护城河&#xff1f;这个问题可以有答案&#xff0c;也可以没答案。 没答案是因为不存在绝对意义上的护城河&#xff0c;甚至大部分人都无法实现。有答案是针对个人和不同的期待值还是有的。 答案&#xff1a;写的足够多&#xff0c;时间足够长&#xff0c;你热爱…