我有一些代码:
const string MY_STRINGS[3] = { "A", "B", "C" };
当我尝试这样做时:
int main() {
MY_STRINGS[1] = MY_STRINGS[2];
}
我收到以下错误:
当然。说得通。我无法分配给
const string
。但是当我执行以下操作时:
int main() {
const string SOME_STRINGS[3] = MY_STRINGS;
MY_STRINGS[1] = MY_STRINGS[2];
}
编译并工作。发生了什么变化,为什么现在可以编译?
最佳答案
我相信GCC复制了阵列。因此,确保const数组是不变的,并且可变数组是可变的。
#include <string>
#include <iostream>
using namespace std;
int main() {
string varStrs[] = {"unchanged", "changed"};
const string constStrs[2] = varStrs;
varStrs[0] = varStrs[1];
//constStrs[0] = constStrs[1]; // <-- will not compile
cout << "const str: " << constStrs[0] << endl;
cout << "var str: " << varStrs[0] << endl;
return 0;
}
我在GCC版本4.1.2上进行了测试
关于c++ - const字符串丢弃限定词,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9369968/