C and C++ are not the same language. In particular, C
const
has nothing to do with C++const
.
我知道,C语言中的
const
限定符和C++语言中的const
限定符之间的区别是其默认链接。在C++中,在 namespace 范围内使用
const
限定符声明的对象具有内部链接,而在C语言中,在全局范围内声明了具有const
限定符的对象具有外部链接(在static
之前没有const
限定符)。但是在C和C++语言之间,它们又有何不同?我以为两种语言在概念和目的上都具有相同的含义。
我的问题:
How does "const" differ in C and C++?的答案并未在
const
限定词的上下文中指出是C语言和C++语言之间的确切区别。只有您不能做的事情或可以用某种语言来做的事情。
最佳答案
const
变量是一个常量表达式(甚至在引入C++ 11 constexpr
之前),但在C语言中不是。这意味着C++允许您执行
const
之类的操作,但C不允许这样做,这可能是出于历史原因。 const size_t n = 1; static int array[n];
在确定链接中发挥作用。这在C++版本之间是不同的。根据cppreference.com(重点是我的):Any of the following names declared at namespace scope have internal linkage:
- non-volatile non-template (since C++14) non-inline (since C++17) non-exported (since C++20) const-qualified variables (including constexpr) that aren't declared extern and aren't previously declared to have external linkage;
在C语言中,
const
根本不影响链接的确定-仅声明范围和存储类说明符很重要。 const
限定成员函数。在C中这是不可能的,因为它不支持成员函数的语法。 const
限定的变量。在C语言中,我们可以不使用初始化程序来编写const
,但是C++不允许这样做。乍一看,这似乎是C语言中毫无意义的语言错误,但是其基本原理是计算机具有只读的硬件寄存器,其值由硬件而非软件设置。这意味着C仍然适用于与硬件相关的编程。 关于c++ - C语言中的const限定词和C++语言中的const限定词有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60110976/