c++ - 在函数内声明 const 而不是变量有什么好处吗?

标签 c++ variables constants

如果我有一个只存在很短时间的函数,将颜色列表设为常数会有什么不同吗?

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/

相关文章:

variables - 变量定义如何在汇编中工作?

floating-point - 如何访问浮点常量?

从 R 调用时 C++ 程序无法运行(符号查找错误)

c++ - 当特定节点对之间存在多条最短路径时,boost graph dijkstra_shortest_paths 如何选择最短路径?

javascript - 为什么我的函数不能识别我的全局变量? (JavaScript)

c++ - const & 指的是非 volatile 变量。变量发生变化。更改是否会使 const & 无效?

const 指针的 C++ typedef 解释

c++ - 如何使用箭头浏览QtVirtualKeyboard

c++ - 如何根据模板的两个整数参数之间的关系部分特化模板

regex - TCL 将文本字符串拆分为多个变量(eggdrop)