gpt4 book ai didi

c++ - 使 char 函数参数为 const?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:51:43 24 4
gpt4 key购买 nike

考虑这个函数声明:

int IndexOf(const char *, char);

其中 char * 是一个字符串,char 是要在字符串中查找的字符(如果未找到 char 则返回 -1,否则返回其位置)。使 char 也 const 有意义吗?我总是尝试在指针参数上使用 const,但当按值调用某些内容时,我通常会不使用 const。

你有什么想法?

最佳答案

假设您不打算调整任一参数的值:

我会将函数定义为:

int IndexOf( const char * const , const char )
{
//...
}

但保留函数声明为:

int IndexOf( const char * , char );

换句话说:
我会在 header 中显示const最低 级别,然后使用const最大可能 级别> 在实现中。

为什么?

  1. 将 header 和实现分开允许我更改实现中的 const 参数而无需触及 header (除了那些非常 const 的参数,应该需要更改标题)。
  2. 它使代码更加自文档化。
  3. 这使得在编译器不将其捕获为错误的情况下引入错误变得更加困难。
  4. 这使得其他程序员在进行 future 更改时更难引入错误。

在影响函数的调用者方面,是否设置按值传递参数 const 没有“效果”——这就是为什么你应该将它们保留在 header 之外——但它们可以使您的实现更健壮且更易于维护。

显然,如果更改参数比将其复制到另一个局部变量更有用,那么不要为了这样做而将其设为 const

关于c++ - 使 char 函数参数为 const?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4499924/

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