c++ - 向我推销 const 正确性

标签 c++ const-correctness

那么为什么总是建议尽可能多地使用 const 呢?在我看来,使用 const 可能比 C++ 中的帮助更痛苦。但话又说回来,我是从 python 的角度来看的:如果你不想改变某些东西,就不要改变它。话虽如此,这里有几个问题:

  1. 似乎每次我将某些东西标记为 const 时,我都会收到一个错误,并且必须将其他一些函数也更改为 const。然后这导致我不得不在其他地方更改 another 函数。有了经验,这会变得更容易吗?

  2. 使用 const 的好处真的足以弥补麻烦吗?如果你不打算改变一个对象,为什么不写不改变它的代码呢?

我应该指出,在这个时间点上,我最关注的是使用 const 来实现正确性和可维护性的好处,尽管了解性能影响也很好。

最佳答案

这是关于“const 正确性”的权威文章:https://isocpp.org/wiki/faq/const-correctness .

简而言之,使用 const 是一种很好的做法,因为...

  1. 它可以防止您意外更改不打算更改的变量,
  2. 它可以防止您进行意外的变量分配,并且
  3. 编译器可以对其进行优化。例如,您可以免受

    if( x = y ) // whoops, meant if( x == y )
    

同时,编译器可以生成更高效的代码,因为它始终准确地知道变量/函数的状态。如果您正在编写紧凑的 C++ 代码,这很好。

您是正确的,因为很难始终如一地使用 const-correctness,但最终代码更简洁,更安全。当您进行大量 C++ 开发时,这样做的好处很快就会显现出来。

关于c++ - 向我推销 const 正确性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/136880/

相关文章:

c++ - 如何在非常量指针集合中搜索常量指针?

c++ - 在 OSX 上从 C++ 打开 PDF

c++ - C++ Hello World程序中的错误

c++ - 将指向成员函数的指针转换为指向 C 函数的指针是一种好习惯吗

C++ getter 函数 : const and non const

C++ pass-by-non-const-reference 方法 inside pass-by-const-reference 方法

c++ - 为什么 const 正确性规则不适用于内置库?

c++ - C++模板类的内部类访问

c++ - 结构的初始序列是什么?

c++ - 结构初始化中的常量正确性