gpt4 book ai didi

c++ - 把 "const"类型前面的 "primitive"去掉会更好吗?

转载 作者:IT老高 更新时间:2023-10-28 13:57:51 26 4
gpt4 key购买 nike

在代码审查过程中,我的一位同事向我提到,在 header 中用作函数参数的“原始类型”前面的“const”是没有意义的,他建议删除这些“const”。他建议在这种情况下只在源文件中使用“const”。原始类型是指“int”、“char”、“float”等类型。

以下是示例。

example.h

int ProcessScore(const int score);

example.cc

int ProcessScore(const int score) {
// Do some calculation using score
return some_value;
}

他的建议如下:

example.h

int ProcessScore(int score);  // const is removed here.

example.cc

int ProcessScore(const int score) {
// Do some calculation using score
return some_value;
}

但我有点困惑。通常情况下,用户只会看头文件,所以如果头文件和源文件不一致,可能会造成混淆。

有人可以给点建议吗?

最佳答案

对于所有 类型(不仅仅是原始类型),函数声明中的顶级 const 限定符将被忽略。所以下面四个都声明了同一个函数:

void foo(int const i, int const j);
void foo(int i, int const j);
void foo(int const i, int j);
void foo(int i, int j);

然而,在函数 body 中不会忽略 const 限定符。在那里它可能对 const 正确性产生影响。但这是该功能的实现细节。所以普遍的共识是这样的:

  1. 将 const 排除在声明之外。它只是杂乱无章,不会影响客户端调用函数的方式。

  2. 如果您希望编译器捕获对参数的任何意外修改,请将 const 留在定义中

关于c++ - 把 "const"类型前面的 "primitive"去掉会更好吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46292490/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com