Closed. This question needs details or clarity。它当前不接受答案。
想改善这个问题吗?添加详细信息,并通过editing this post阐明问题。
5年前关闭。
Improve this question
In my answer到此question中,提到如果变量被声明为
如果我想初始化
除了使用该问题中建议的
然后只声明
当然,除非您覆盖
想改善这个问题吗?添加详细信息,并通过editing this post阐明问题。
5年前关闭。
Improve this question
In my answer到此question中,提到如果变量被声明为
const
,我发布的代码将无法工作。如果我想初始化
const
类型的长数组怎么办int main (){
const int ar[100];
//this is invalid in c++
//something like this
for (int i=0;i <100;++i)
ar[i]=i;
return 0;
}
除了使用该问题中建议的
#define
method之外,还有其他方法可以这样做吗? 最佳答案
没有黑客就无法直接做到这一点。
在C++中,解决此问题的一种方法是利用以下事实:在其构造函数内部const
对象仍然可以修改。因此,您可以将数组包装到一个类中,然后在构造函数中对其进行初始化
struct Arr
{
int a[100];
A()
{
for (unsigned i = 0; i < 100; ++i)
a[i] = i;
}
};
然后只声明
const Arr arr;
当然,除非您覆盖
arr.a[i]
中的运算符,否则现在您必须以Arr
的身份对其进行访问。关于c++ - const数组初始化,如果其时间过长,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30758172/