我想知道在使用值的副本初始化非引用/指针变量时使用可选的const限定符时有什么优点和缺点:

例如:

  • void f(const T v)代替void f(T v) // v does not need to be changed
  • if (const int err = f()) {/*...*/}代替if (int err = f()) {/*...*/}
  • 甚至void f() {const T* const v = p; /*...*/}代替void f() {const T* v = p; /*...*/}

  • 这只是风格问题吗? C++ 11标准在其示例中使用什么? const不能提示编译器将变量存储在某些特殊的只读存储器中(在某些实现中)吗?

    最佳答案

    在这种情况下,const可以提醒您该变量不应更改。这样,在以后(可能要晚得多),当您需要修改此函数时,就不会偶然更改变量并破坏此函数中依赖于变量不变性的其他代码。
    如果变量类型(类)具有微不足道的构造函数,则编译器仅将const变量存储在只读存储器中。

    关于c++ - 复制初始化变量时,const限定符有用吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15429904/

    10-08 22:29
    查看更多