小编典典

对函数参数使用“const”

all

你走多远const?你只是const在必要时制作函数,还是全力以赴并在任何地方使用它?例如,想象一个简单的 mutator,它接受一个布尔参数:

void SetValue(const bool b) { my_val_ = b; }

const真的有用吗?我个人选择广泛使用它,包括参数,但在这种情况下,我想知道它是否值得?

我还惊讶地发现,您可以const在函数声明中省略参数,但可以将其包含在函数定义中,例如:

.h 文件

void func(int n, long l);

.cpp 文件

void func(const int n, const long l)

是否有一个原因?这对我来说似乎有点不寻常。


阅读 120

收藏
2022-03-14

共1个答案

小编典典

原因是const参数仅在函数内本地应用,因为它正在处理数据的副本。这意味着函数签名无论如何都是一样的。不过,经常这样做可能是不好的风格。

我个人倾向于不使用const除了引用和指针参数。对于复制的对象,这并不重要,尽管它可以更安全,因为它在函数内发出意图信号。这真的是一个判断电话。虽然在循环某些东西时我确实倾向于使用,const_iterator但我不打算修改它,所以我猜每个人都是他自己的,只要const严格维护引用类型的正确性。

2022-03-14