如果我有一个只存在很短时间的函数,将颜色列表设为常数会有什么不同吗?
string getrandcolor(){
const string colors[5] = {"red", "blue", "green", "yellow", "purple"};
return colors[rand() % 5];
}
注意:实际的颜色列表包含数百种颜色,而不仅仅是我展示的小样本,不确定这是否会有所不同。
最佳答案
它可以防止您不小心覆盖您不想更改的变量。 “糟糕!”-保护可能是 const
最重要的功能。
假设一个编译器可以通过知道一个变量不应该改变来预测某种优化,但我的测试从来没有发现一个在你描述的情况下实际上做了一些有意义的事情。
常量 static 确实在您的特定代码示例中有重要区别。因为您的 colors[] 数组是本地数组,所以每次调用 getrandcolor()
函数时都必须重新构建它。这意味着每次调用 getrandcolor()
时字符串构造函数都会运行五次,这是非常浪费的。 const static 表示数据只构造一次——函数第一次运行时——并放入共享内存空间。
关于c++ - 在函数内声明 const 而不是变量有什么好处吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6934024/