当前位置:  开发笔记 > 编程语言 > 正文

是否可以使用const变量而不是constexpr来声明数组?

如何解决《是否可以使用const变量而不是constexpr来声明数组?》经验,为你挑选了1个好方法。

这个C++代码是否正确?

const size_t tabsize = 50;
int tab[tabsize];

问题是我已经看到了很多关于这件事的相互矛盾的意见.即使是## c ++ IRC频道和节目论坛的人也要求完全不同的东西.

有人说上面的代码是正确的.

其他人认为它不是,它应该是这样的:

constexpr size_t tabsize = 50;
int tab[tabsize];

由于我对"C++专家"的观点存在冲突已经足够困惑,我可以请一个合理的备份答案吗?非常感谢!



1> bolov..:

在C++中,常量整数的处理方式与其他常量类型不同.如果使用编译时常量表达式初始化它们,则可以在编译时表达式中使用它们.这样做(在开始时C++,当constexpr不存在时),以便数组大小可以是const int而不是#defined(就像你在C中被强制一样):

(假设没有VLA扩展)

const int s = 10;
int a[s];          // OK in C++

const int s2 = read(); // assume `read` gets a value at run-time
int a2[s2];       // Not OK

int x = 10;
const int s3 = x;
int a3[s3];       // Not OK

所以答案是肯定的,你可以使用const整数变量作为数组的大小,如果它是由编译时常量表达式初始化的


这是我对另一个问题的回答.这个问题是关于intvs float constconstexpr,所以不完全是重复,但答案非常适用.

推荐阅读
ar_wen2402851455
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有