你走多远const?您是否只是const在必要时制作功能,或者您是否全力以赴并在任何地方使用它?例如,想象一个简单的mutator,它接受一个布尔参数:
void SetValue(const bool b) { my_val_ = b; }
Run Code Online (Sandbox Code Playgroud)
这const实际上有用吗?我个人选择广泛使用它,包括参数,但在这种情况下,我想知道它是否值得?
我还惊讶地发现你可以省略const函数声明中的参数,但可以将它包含在函数定义中,例如:
.h文件
void func(int n, long l);
Run Code Online (Sandbox Code Playgroud)
.cpp文件
void func(const int n, const long l)
Run Code Online (Sandbox Code Playgroud)
是否有一个原因?这对我来说似乎有点不寻常.
当我遇到计算立方体体积的函数时,我正在阅读我的C++书籍(Deitel).代码如下:
double cube (const double side){
return side * side * side;
}
Run Code Online (Sandbox Code Playgroud)
使用"const"限定符的解释是这样的:"const限定应该用于强制执行最小特权原则,告诉编译器函数不修改变量端".
我的问题:这里不是使用"const"冗余/不必要的,因为变量是通过值传递的,所以函数无论如何都不能修改它?
我看到这个main()函数通常被称为:
int main(int argc, char** argv)int main(int argc, char* argv[])int main(void)与这些定义相关:
char** argv和char* argv[]是一个优先于另一个还是可以 100% 互换?argc字符串和参数字符串(应该是?)都是不可变的,为什么它们不是const?或者这是无关紧要的事情,只是出于惯例/历史目的而被省略了?我想这可以通过以下方式完成:const char **argv = (const char **) argv;但很好奇为什么这还没有完成(例如,是否有理由更改收到的参数?)