Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/160.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 函数声明中的const最佳实践_C++ - Fatal编程技术网

C++ 函数声明中的const最佳实践

C++ 函数声明中的const最佳实践,c++,C++,我翻遍了存档的帖子,但找不到类似的东西 只是一个简单的问题:声明检查函数的最佳实践是什么: int foo(int a) const { return a+1; } 我指的是const关键字,你通常在检查函数的末尾声明它吗?我只是问,因为我通常这样做,即使99%我不会声明任何常量类。。我一直在告诉自己,如果我需要的话,它可以节省我一些时间,但我想知道是否有人真的关心声明const函数,或者我只是对类型安全代码有点偏执是的,如果你想让你的程序支持const正确性,你当然应该这样做 一旦您开始将实

我翻遍了存档的帖子,但找不到类似的东西

只是一个简单的问题:声明检查函数的最佳实践是什么:

int foo(int a) const { return a+1; }

我指的是const关键字,你通常在检查函数的末尾声明它吗?我只是问,因为我通常这样做,即使99%我不会声明任何常量类。。我一直在告诉自己,如果我需要的话,它可以节省我一些时间,但我想知道是否有人真的关心声明const函数,或者我只是对类型安全代码有点偏执是的,如果你想让你的程序支持const正确性,你当然应该这样做

一旦您开始将实例声明为
Const
,Const correction就可以通过程序传播。随着程序复杂性和您对
const
的使用增加,您将:

  • 如果现在不添加常量对象,则在使用常量对象时会遇到许多编译器错误
  • 或者,一旦您喜欢在适当的位置使用
    const
    ,您的程序将生成没有(或更少)错误的程序
  • 或者,您可能会在一段时间内避免使用
    const
    ——如果您想改进设计,这(依我看)不是一条好路

随着时间的推移,我们中的许多人已经学会在超过1%的代码中使用
const

是的,如果希望程序支持const正确性,当然应该这样做

一旦您开始将实例声明为
Const
,Const correction就可以通过程序传播。随着程序复杂性和您对
const
的使用增加,您将:

  • 如果现在不添加常量对象,则在使用常量对象时会遇到许多编译器错误
  • 或者,一旦您喜欢在适当的位置使用
    const
    ,您的程序将生成没有(或更少)错误的程序
  • 或者,您可能会在一段时间内避免使用
    const
    ——如果您想改进设计,这(依我看)不是一条好路

随着时间的推移,我们中的许多人已经学会在超过1%的代码中使用
const

附加在函数声明和定义末尾的
const
表示函数调用方和函数之间的约定,即函数不会修改该类的任何成员


因此,如果函数为此类常量正确性契约提供保证,则应将其扩展到函数的用户。

函数声明和定义末尾附加的
const
表示函数调用方和函数之间的契约,即函数不会修改该函数的任何成员班级


因此,如果您的函数为这种常量正确性契约提供了保证,那么您应该将其扩展到函数的用户。

假设您谈论的是成员函数(非成员函数不能是
const
),您应该始终编写常量正确的代码,这意味着每个不修改对象可见状态的函数都应该是
const


即使您从未创建过该类型的常量对象,在许多情况下,您也会通过常量引用将对象传递给函数,在这种情况下,只能对对象调用
const
成员函数(顺便说一句,这意味着您应该通过对不需要更改接收对象状态的任何函数的常量引用来传递对象)

假设您正在谈论成员函数(非成员函数不能是
const
),您应该始终编写常量正确的代码,这意味着每个不修改对象可见状态的函数都应该是
const


即使您从未创建过该类型的常量对象,在许多情况下,您也会通过常量引用将对象传递给函数,在这种情况下,只能对对象调用
const
成员函数(顺便说一句,这意味着您应该通过对任何不需要更改接收对象状态的函数的常量引用来传递对象)

什么叫检查函数?啊..只是一种调用不更改任何对象成员的方法该函数不访问任何成员,因此它应该是静态的。静态方法和常量方法实际上并不相同,此外,我说的是一个不更改任何成员的函数,而不是access,但您提供了一个exa例如,一个方法除了参数之外不访问任何东西,因此它应该是
静态的
。我不是说所有的
常量
方法都应该是
静态的
,我只是说你例子中的方法应该是。你怎么称呼一个检查函数?啊..只是一种调用一个不改变任何对象的方法的方法berThat函数不访问任何成员,因此它可能应该是静态的。静态方法和常量方法实际上并不相同,此外,我说的函数不会更改任何成员,而不是访问权限。但是您提供了一个方法示例,该方法除参数外不访问任何内容,因此它应该是静态的>。我不是说所有的
const
方法都应该是
static
,我只是说你例子中的方法应该是。谢谢,但这不是一个关于const关键字的含义/用法的问题,我只是想知道是否还有人关心声明constfunctions@user815129每个优秀的C++程序员都会。谢谢。这不是一个关于const关键字的含义/用法的问题,我只是想知道是否还有人关心声明constfunctions@user815129每一个优秀的C++程序员都会这么做。