我想知道在使用值的副本初始化非引用/指针变量时使用可选的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/