C 中的 const 限定符和 C++ 中的 const 限定符有什么区别?

2023-11-25

我找到了一个comment用户的R..:

C 和 C++ 不是同一种语言。特别是,Cconst与C++无关const.

我知道,两者之间的一个区别constC 中的限定符和constC++ 中的限定符是其默认链接。

在命名空间范围内声明的对象constC++ 中的限定符具有内部链接,而 C 中的对象具有const在全局范围内声明的限定符(没有static预选赛之前const) 具有外部链接。

但是 C 和 C++ 语言之间还有什么不同呢?我认为两种语言都有相同的概念和目的。

我的问题:

  • What is the difference between the const qualifier in C and the const qualifier in C++?

的答案C 和 C++ 中的“const”有何不同?不要指出确切的差异betweenC 和 C++ 语言在const预选赛。只有在某种语言中你不能做或可以做的事情。


  • 最重要的区别是在 C++ 中const变量是一个常量表达式(甚至在引入 C++11 之前constexpr),但是一个constC 中的变量不是。

    这意味着 C++ 允许你做类似的事情const size_t n = 1; static int array[n];但 C 不允许这样做,据说是出于历史原因。

  • In C++, const参与确定联系。这在 C++ 版本之间有所不同。根据cppreference.com(强调我的):

    在命名空间范围内声明的以下任何名称都具有内部链接:


    • 非易失性 非模板 (C++14 起) 非内联 (C++17 起) 非导出 (C++20 起)const 限定变量(包括 constexpr)未声明为 extern 并且之前未声明为具有外部链接;

    而在 C 中,const根本不参与确定链接——只有声明范围和存储类说明符很重要。

  • 在 C++ 中,你可以const限定成员函数。这在 C 中是不可能的,因为它没有对成员函数的语法支持。

  • C允许const- 无需初始化器即可声明的限定变量。在C中,我们可以写const int x;没有初始化器,但 C++ 不允许这样做。乍一看,这似乎是 C 语言中毫无意义的语言错误,但其基本原理是计算机具有只读硬件寄存器,其值由硬件而不是软件设置。这意味着 C 仍然适合与硬件相关的编程。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C 中的 const 限定符和 C++ 中的 const 限定符有什么区别? 的相关文章

  • EF Core Group By 翻译支持条件总和

    听说 EF Core 2 1 将支持翻译小组 我感到非常兴奋 我下载了预览版并开始测试它 但发现我在很多地方仍然没有得到翻译分组 在下面的代码片段中 对 TotalFlagCases 的查询将阻止翻译分组工作 无论如何 我可以重写这个以便我
  • C 编程 - 文件 - fwrite

    我有一个关于编程和文件的问题 while current NULL if current gt Id Doctor 0 current current gt next id doc current gt Id Doctor if curre
  • Web 客户端和 Expect100Continue

    使用 WebClient C NET 时设置 Expect100Continue 的最佳方法是什么 我有下面的代码 我仍然在标题中看到 100 continue 愚蠢的 apache 仍然抱怨 505 错误 string url http
  • 按成员序列化

    我已经实现了template
  • 在结构中使用 typedef 枚举并避免类型混合警告

    我正在使用 C99 我的编译器是 IAR Embedded workbench 但我认为这个问题对于其他一些编译器也有效 我有一个 typedef 枚举 其中包含一些项目 并且我向该新类型的结构添加了一个元素 typedef enum fo
  • 查找c中结构元素的偏移量

    struct a struct b int i float j x struct c int k float l y z 谁能解释一下如何找到偏移量int k这样我们就可以找到地址int i Use offsetof 找到从开始处的偏移量z
  • 类模板参数推导 - clang 和 gcc 不同

    下面的代码使用 gcc 编译 但不使用 clang 编译 https godbolt org z ttqGuL template
  • 如何使用 ICU 解析汉字数字字符?

    我正在编写一个使用 ICU 来解析由汉字数字字符组成的 Unicode 字符串的函数 并希望返回该字符串的整数值 五 gt 5 三十一 gt 31 五千九百七十二 gt 5972 我将区域设置设置为 Locale getJapan 并使用
  • 在 Windows 窗体中保存带有 Alpha 通道的单色位图会保存不同(错误)的颜色

    在 C NET 2 0 Windows 窗体 Visual Studio Express 2010 中 我保存由相同颜色组成的图像 Bitmap bitmap new Bitmap width height PixelFormat Form
  • Clang 3.1 + libc++ 编译错误

    我已经构建并安装了 在前缀下 alt LLVM Clang trunk 2012 年 4 月 23 日 在 Ubuntu 12 04 上成功使用 GCC 4 6 然后使用此 Clang 构建的 libc 当我想使用它时我必须同时提供 lc
  • 不同枚举类型的范围和可转换性

    在什么条件下可以从一种枚举类型转换为另一种枚举类型 让我们考虑以下代码 include
  • 堆栈溢出:堆栈空间中重复的临时分配?

    struct MemBlock char mem 1024 MemBlock operator const MemBlock b const return MemBlock global void foo int step 0 if ste
  • C# 中通过 Process.Kill() 终止的进程的退出代码

    如果在我的 C 应用程序中 我正在创建一个可以正常终止或开始行为异常的子进程 在这种情况下 我通过调用 Process Kill 来终止它 但是 我想知道该进程是否已退出通常情况下 我知道我可以获得终止进程的错误代码 但是正常的退出代码是什
  • 将多个表映射到实体框架中的单个实体类

    我正在开发一个旧数据库 该数据库有 2 个具有 1 1 关系的表 目前 我为每个定义的表定义了一种类型 1Test 1Result 我想将这些特定的表合并到一个类中 当前的类型如下所示 public class Result public
  • 如何序列化/反序列化自定义数据集

    我有一个 winforms 应用程序 它使用强类型的自定义数据集来保存数据进行处理 它由数据库中的数据填充 我有一个用户控件 它接受任何自定义数据集并在数据网格中显示内容 这用于测试和调试 为了使控件可重用 我将自定义数据集视为普通的 Sy
  • Windows 窗体:如果文本太长,请添加新行到标签

    我正在使用 C 有时 从网络服务返回的文本 我在标签中显示 太长 并且会在表单边缘被截断 如果标签不适合表单 是否有一种简单的方法可以在标签中添加换行符 Thanks 如果您将标签设置为autosize 它会随着您输入的任何文本自动增长 为
  • 向现有 TCP 和 UDP 代码添加 SSL 支持?

    这是我的问题 现在我有一个 Linux 服务器应用程序 使用 C gcc 编写 它与 Windows C 客户端应用程序 Visual Studio 9 Qt 4 5 进行通信 是什么very在不完全破坏现有协议的情况下向双方添加 SSL
  • 混合 ExecutionContext.SuppressFlow 和任务时 AsyncLocal.Value 出现意外值

    在应用程序中 由于 AsyncLocal 的错误 意外值 我遇到了奇怪的行为 尽管我抑制了执行上下文的流程 但 AsyncLocal Value 属性有时不会在新生成的任务的执行范围内重置 下面我创建了一个最小的可重现示例来演示该问题 pr
  • 如何将服务器服务连接到 Dynamics Online

    我正在修改内部管理应用程序以连接到我们的在线托管 Dynamics 2016 实例 根据一些在线教程 我一直在使用OrganizationServiceProxy out of Microsoft Xrm Sdk Client来自 SDK
  • 使用.NET技术录制屏幕视频[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有没有一种方法可以使用 NET 技术来录制屏幕 无论是桌面还是窗口 我的目标是免费的 我喜欢小型 低

随机推荐

  • 2个类可以共享一个好友功能吗?

    今天我对好友功能有疑问 两个类可以有相同的友元函数吗 说个例子friend void f1 在 A 类和 B 类中声明 这可能吗 如果是这样 函数 f1 可以访问两个类的成员吗 一个例子可以最好地解释这一点 class B defined
  • 如何使用 PHP GD 库向图像添加文本

    我在 image creator 中有图像创建代码 图像输出的文件是 image php 并具有以下代码
  • 在 github 存储库中搜索定义给定函数的文件

    我想搜索 github 上的公共存储库以查找软件定义给定函数的位置 使用高级搜索似乎应该很简单 不确定我是否不理解过滤器或者函数是否未定义 例如 假设我想找到 Hadley 的位置facet wrap函数在 ggplot2 存储库中定义 它
  • 防止 WinForm AcceptButton 处理 Return 键

    我有一个带有按钮的表单AcceptButton属性 以便在用户按 Return 键时发生逻辑并关闭表单 在该表单上 我显示一个动态创建的TextBox当用户双击某个区域时出现 然后当用户按回车键时隐藏 当用户按下 Return 键时 如何防
  • 在 OS X 上创建类似窗口的菜单

    我想创建一个相同类型的托盘菜单 例如这个应用程序 因为它在使用node webkit nw js的应用程序列表中 所以我认为这是可能的 我浏览了所有文档 但找不到任何有关如何实现这一目标的信息 谷歌搜索也没有什么结果 也许你们中的一个人以前
  • 无法实例化类:org.apache.naming.java.javaURLContextFactory

    我正在研究 Junit 测试文件 该文件加载 SQL 文件并将其加载到 Oracle 中 import java io BufferedReader import java io File import java io FileReader
  • 嵌套点击处理程序有什么不好吗?

    有人向我提到过这一点 但我从未找到任何文件来支持这一说法 在应用程序中嵌套单击处理程序是否不好 例如 div on click function Do things p on click function Do things 如果这是不好的
  • 使用 Javascript 设置日期时间格式

    我有一个日期 时间字符串 例如2012 01 13 04 37 20但我想将其转换为dd mm yyyy hh mm 我怎样才能做到这一点 我正在使用以下代码 但它抛出异常 var now 2012 01 13 04 37 20 var d
  • Regex 使用 C# 将 Markdown 内联链接转换为 HTML 链接

    我正在用 C 编写一个非常基本的 Markdown 到 HTML 转换器 我设法编写正则表达式来转换粗体和斜体文本 但我正在努力想出一段正则表达式 它可以将 markdown 链接转换为 html 中的链接标签 例如 This is a l
  • JavaScript 文化敏感的货币格式

    如何在 JavaScript 中以文化意识的方式格式化货币相关数据 所以我知道这是一个老问题 但如果其他人出现寻找类似的答案 在现代 JavaScript 中你可以使用 new Intl NumberFormat de DE style c
  • 编写自定义异常类需要考虑哪些因素?

    什么时候自定义异常类最有价值 是否存在应该或不应该使用它们的情况 有什么好处 相关问题 抛出异常的性能注意事项 您是否为特定问题编写例外情况或一般例外情况 要问自己的问题 谁会抓住它 如果没有人 那么您实际上并不需要自定义异常 你会把它扔到
  • 比较真假混淆

    我对测试分配为 False True 的值有些困惑 要检查真实值 我们可以简单地 a True if a 假的怎么样 a False if a lt or should it be if a False or if not a 来自Pyth
  • 确定 iCloud 键值存储的可用性

    我正在开发使用 iCloud Key Value 存储的 OSX 10 8 应用程序 确实如此not使用文档存储 我想确定 iCloud 键值存储是否可供用户使用 我试图使用云 BOOL isCloudAvailable id curren
  • 在 EOF 之前的任何地方都找不到字符串终止符“str”

    为什么我会收到此错误 use strict use warnings my str lt
  • EpiServer - 以编程方式将块添加到内容区域

    我有一个内容区域 其中有一些块 这些块的某些属性必须使用 SQL 查询中的数据进行初始化 因此在控制器中我有这样的内容 foreach ObjectType item in MyList BlockData currentObject ne
  • 在 cfquery 中使用 cachedwithin 属性

    当您在 cfquery 中使用 cachedwithin 属性时 它如何将查询存储在内存中 它是否仅按您分配给查询的名称存储它 例如 如果在我的索引页面上我缓存一个查询一个小时并将其命名为 getPeople 则不同页面 或同一页面 上具有
  • Inno Setup - 正确使用[类型]、[组件]和[任务]

    我正在编写一个脚本 要求用户选择要安装应用程序的哪些部分 仅应用程序 仅数据库引擎 仅数据或这些的任意组合 我知道我应该使用 Components 部分来定义这些 但我对类型 组件和任务之间的相互作用感到困惑 首先 我认为 Tasks 用于
  • 使用stretchableImageWithLeftCapWidth调整图像大小

    我正在尝试使用stretchableImageWithLeftCapWidth调整图像大小 它在模拟器上工作 但在设备上 出现垂直的绿色条 我尝试使用 imageNamed initWithContentsOfFile 和 image Wi
  • 由于字典太大而导致 System.OutOfMemoryException

    我在字典中保存了一个带有值的大缓存IEnumerable
  • C 中的 const 限定符和 C++ 中的 const 限定符有什么区别?

    我找到了一个comment用户的R C 和 C 不是同一种语言 特别是 Cconst与C 无关const 我知道 两者之间的一个区别constC 中的限定符和constC 中的限定符是其默认链接 在命名空间范围内声明的对象constC 中的