【发布时间】:2016-05-10 20:51:01
【问题描述】:
取下面的sn-ps代码:
struct Foo{
int _m=0;
int Bar(){
return _m;
}
};
int Add(int x, int y){
return x + y;
}
int main(){
int i = 5;
std::cout << i << '\n';
}
在代码审查期间,不可避免地会有人提出const correctness。
这将导致以下修订:
struct Foo{
int _m=0;
int Bar() const{
return _m;
}
};
int Add(const int x, const int y){
return x + y;
}
int main(){
const int i = 5;
std::cout << i << '\n';
}
编译器肯定会为我提出建议吗?
查看clang 和gcc,我没有看到任何相关标志。
编译器选择不提供这个有什么原因吗?
【问题讨论】:
-
您可能喜欢真正的函数式语言,其中所有变量都是不可变的。
-
int Add(const int x, const int y)和const int i = 5;是蹩脚的 IMO。仅将成员函数标记为const很重要。 -
@SergeyA:它们不是真正的“变量”,那么它们不是
-
@M.M:我完全不同意。
-
@LightnessRacesinOrbit:我很确定你可以不同意更多(但是是的 - const ftw!)
标签: c++ g++ constants compiler-warnings clang++