相关疑难解决方法(0)

使用'const'作为函数参数

你走多远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++ const

368
推荐指数
15
解决办法
24万
查看次数

通过值时,"const"不是多余的吗?

当我遇到计算立方体体积的函数时,我正在阅读我的C++书籍(Deitel).代码如下:

double cube (const double side){
    return side * side * side;
}
Run Code Online (Sandbox Code Playgroud)

使用"const"限定符的解释是这样的:"const限定应该用于强制执行最小特权原则,告诉编译器函数不修改变量端".

我的问题:这里不是使用"const"冗余/不必要的,因为变量是通过值传递的,所以函数无论如何都不能修改它?

c++ const pass-by-value

74
推荐指数
2
解决办法
2万
查看次数

原因 main-C 不是 const

我看到这个main()函数通常被称为:

  • int main(int argc, char** argv)
  • int main(int argc, char* argv[])
  • int main(void)

与这些定义相关:

  1. 从技术上讲,对于char** argvchar* argv[]是一个优先于另一个还是可以 100% 互换?
  2. 因为argc字符串和参数字符串(应该是?)都是不可变的,为什么它们不是const?或者这是无关紧要的事情,只是出于惯例/历史目的而被省略了?我想这可以通过以下方式完成:const char **argv = (const char **) argv;但很好奇为什么这还没有完成(例如,是否有理由更改收到的参数?)

c pointers program-entry-point constants

3
推荐指数
1
解决办法
97
查看次数