C++ C++;11:一种新的语言?

C++ C++;11:一种新的语言?,c++,c++11,C++,C++11,最近我开始阅读(只是一点)未来的C++11标准 有很多新功能,其中一些已经通过boostlibs提供。当然,我对这个新标准非常满意,我希望尽快使用所有新功能 不管怎样,和一些朋友,长时间的C++开发者讨论这个草案,会出现一些担忧。因此,我请你们(回答他们): 1)语言本身 这个更新是巨大的,对于单个标准更新来说可能太大了。对于编译器供应商(即使他们中的大多数已经开始实现某些功能)以及最终用户来说,这都是巨大的挑战 特别是,我的一个朋友告诉我“这是一种新的语言” 在这个更新之后,我们能认为它是一

最近我开始阅读(只是一点)未来的C++11标准

有很多新功能,其中一些已经通过boostlibs提供。当然,我对这个新标准非常满意,我希望尽快使用所有新功能

不管怎样,和一些朋友,长时间的C++开发者讨论这个草案,会出现一些担忧。因此,我请你们(回答他们):

1)语言本身

这个更新是巨大的,对于单个标准更新来说可能太大了。对于编译器供应商(即使他们中的大多数已经开始实现某些功能)以及最终用户来说,这都是巨大的挑战

特别是,我的一个朋友告诉我“这是一种新的语言”

    在这个更新之后,我们能认为它是一种全新的语言吗?
  • 您是否计划切换到新标准或跟上“旧”标准
2)语言知识

  • 新标准将如何影响学习曲线
  • 教这门语言会更难吗
  • 有些功能虽然非常棒,但对我来说似乎有点太“学术化”(我指的是定义)。我错了吗
  • 掌握所有这些新添加的内容可能是一场噩梦,不是吗
      你的朋友部分是对的,但大部分是错的:这是一种具有额外功能的相同语言

      好的是,你不必掌握所有的新功能。标准机构的主要任务之一是不破坏现有代码,这样您就可以继续,愉快地用您的旧风格编码(尽管我做“C++”应用程序,但我仍然主要是一名C程序员:-)

      只有当你想看一看新功能时,你才需要专注于这些变化。如果需要的话,这是一个可以持续多年的过程

      我的建议是在高水平上了解所有新功能(如果只是为了在面试中听起来很有知识),但要慢慢了解细节。

      1)语言本身

      就我所知,两者之间确实没有突破性的变化 C++'03和C++'0x。我在这里唯一能想到的就是使用
      auto
      作为存储类说明符,但由于它没有语义 意思是我不认为这是个问题

      该标准还有许多其他的学术修正,这些修正非常重要 必要的,例如更好地描述构件的布局 数据。最后,随着多核/cpu体系结构成为标准, 修复内存模型是必须的

      2)语言知识

      我个人认为,对于99.9%的C++开发人员来说,新的语言将会更容易使用。我特别想到的功能,如自动,lambda的和constexpr。这些特性真的应该让使用这种语言更加愉快

      在更高级的级别上,您还具有其他功能,例如可变 帮助更高级用户的模板等

      但是这里没有什么新鲜事,我仍然对大量的 日常的C++开发人员,没有使用(甚至听说过)STL.

      从个人角度来看,新标准中我唯一有点担心的特性是概念。由于这是一个如此巨大的变化,与模板(即完全破坏的实现)相同的问题是一个真正的危险

      更新后的投票结果:

      因为“C++0x”的概念被删除,将再次被C++ C++所占用。最后,除了

      auto
      之外,还有一些变化可能会破坏代码,但在实践中,它们可能非常罕见。关键差异可在附录C.2中找到。

      您计划切换到新标准还是跟上“旧”标准

      一年前,我正在编写严格的C89,因为所讨论的产品具有很强的可移植性,可以移植到嵌入式平台,其中一些平台的编译器对C99的哪些部分值得支持有着截然不同的想法。因此,已有20年历史的标准仍然没有被其10年历史的继任者完全取代

      所以我不希望很快就能摆脱C++03


      我确实希望在适当的地方使用C++0x特性。就像我在C代码中使用C99特性一样,在C和C++中使用GCC扩展(并且使用MSVC扩展,虽然我从来没有在MSVC代码上工作过多的时间)。但我希望它是“很好拥有”而不是基线,几乎是无限期的。

      你的编程生涯将始终包括学习和再学习。你不能期望C++在你退休之前一直保持不变,并且使用40年前使用的方法和练习。技术不断发展,而且发展很快。跟上它是你的工作。当然,你可以忽略这一点,继续以目前的方式工作,但5/10年后,你将变得如此过时,以至于当你试图换工作时,你将被迫学习所有这些。在过去的几年里,在工作中学习会更容易:“< P > > P >我们是否可以认为它是一种“新语言”,我认为这是语义学。这没什么区别。它与我们当前的C++代码向后兼容,是一种更好的语言。我们是否认为它是“同一种语言”并不重要。 关于学习语言,请记住,有许多新功能可以使语言更易于学习和使用。大多数增加复杂性的功能只针对库开发人员。他们可以使用这些新功能来创建更好、更高效、更易于使用的库,这样您就可以在不了解这些功能的情况下使用这些库。其中一些变化实际上简化和概括了现有的特性,使新手更容易学习

      是的,这是一个大的更新,但它是由十年的curr经验指导的