我找到了一个comment用户的R..:
C 和 C++ 不是同一种语言。特别是,Cconst
与C++无关const
.
我知道,两者之间的一个区别const
C 中的限定符和const
C++ 中的限定符是其默认链接。
在命名空间范围内声明的对象const
C++ 中的限定符具有内部链接,而 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
),但是一个const
C 中的变量不是。
这意味着 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(使用前将#替换为@)