-Wsuggest-attribute=const
此分析需要选项
-fipa-pure-const
默认启用
-O
及更高
const
。想想
virtual
函数。也许基类的设计者虽然没有修改基类中的参数,但希望将是否修改该参数留给扩展类。此外,考虑一下大型应用程序,其中修改接口或 API 或其他任何内容的成本很高。您现在可能不需要修改该参数,但打算将来这样做。您现在不会成功
const
,并强制完全重建,并且在将来删除
const
时可能会面临错误的风险。
const
参数:
void myFunc(int const param);
是否
不属于接口。它属于函数实现的本地范围。其实这个功能:
int inc(int const param) { return param+1; }
可以声明为
int inc(int param);
声称有权修改变量但实际上并未这样做,并不违反 const 正确性范式。
如果您担心
const_cast
,您可以首先不使用它,或者只是在代码库中使用
grep
。