为什么C++类型默认不是const?

qua*_*ant 14 c++

大师到处告诉我们const一切,除非我们需要对其进行修改,但标准使一切可变的,直到我们宣布const.

我在这里遗漏了什么,或者这是一个矛盾吗?const根据专家(其中一些人可能设计标准),默认情况下,为什么不是C++类型,默认情况下应该制作 const

Mik*_*our 14

除非我们需要修改它,否则无处不在的大师告诉我们const的所有内容,

这是十年或两年的传统智慧,是的.

然而标准使一切都变得可变,直到我们声明它为const.

该标准是从大约五十年前开发的语言发展而来的,当时,正确性,甚至类型检查在很大程度上被认为只是学术兴趣.

我在这里遗漏了什么,或者这是一个矛盾吗?

这不是一个矛盾; 只是一种语言不起作用,有些人会说它应该如何.您仍然可以(并且应该)const在适当的时候声明事情,我们只需要忍受一种不会促使我们走向安全实践的语言.

为什么const默认情况下不是C++类型?

因为改变语言的这一基本方面将打破所有现有代码.这是一个更大的问题,而不是略微减少错误的范围.

  • @6502:返回类型上的“const”没有意义,但在参数中却有意义。我说的是你的具体例子。 (2认同)

Naw*_*waz 13

除非我们需要修改它,否则无处不在的大师告诉我们const的所有内容,

这对来说很有意义.不变性是一个非常高尚的想法.

Rust是一种新语言(由Mozilla开发),默认情况下,变量是不可变的.如果你希望你的变量是可变的,那么你应该通过使用与C++完全相反的关键字使其显式可变mut - 在C++中,你必须通过使用关键字明确地使事物不可变const,否则他们'再次可变默认.

特别是随着多核处理器和更多多线程软件的出现,它对我来说更有意义.我认为默认情况下应该有更多的限制,并且应该有意识地和明确地(而不是隐含地)解除限制(当你需要时).例如,private默认情况下,类的成员; 继承是private默认的.你让他们publicprotected明确.所以应该是- 权利修改的情况一个变量.默认情况下(我认为)您无权修改变量.它需要一点成熟才能理解不变性/限制 - 通过限制,你可以避免软件中的一类错误.这是我的想法,支持声明.

现在回到实际的问题,

为什么C++类型默认不是const,根据const-people,它们应该默认为const?

这是因为

  • 没有多少程序员意识到不变性(作为默认值)使他们的生活变得轻松,因为它是一种新的趋势,至少它最近才迎头赶上.
  • 向后兼容.C默认具有可变类型.