C ++ 11是标准C ++语言的版本。它于2011年8月12日得到国际标准化组织(ISO)的批准,然后由C ++ 14和C ++ 17批准。C ++ 11对核心语言做了一些补充。Visual C ++实现了C ++ 11中的绝大多数功能。
Visual Studio 2015中的以下某些C ++ 11功能-
nullptr-在以前的nullptr中,零曾经是值,它具有隐式转换为整数值的缺点。空指针文字由std::nullptr_t表示。在此nullptr中,不存在隐式转换。
Lambdas -lambda表达式允许在本地定义函数。匿名函数称为lambda。我们可以在需要函数对象std::function的任何地方使用lambda表达式。
auto-在以前的版本中,我们必须指定对象的类型,但是在C ++ 11中,无需指定类型,这意味着您可以直接声明变量而无需指定其类型。
覆盖和最终-版本C ++ 11引入了两个新的特殊标识符,即覆盖和最终。覆盖表示该方法应该是基类中虚拟方法的覆盖。另一方面,final指示派生类不应覆盖虚拟方法。
删除的功能和默认功能-删除的功能对于防止对象复制很有用。要禁用复制,“ =删除; “ 用来。默认函数向编译器生成指令,以生成函数的默认实现,“ = default; ”用于默认功能。
强类型的枚举-在传统枚举中,它们通常在周围范围内导出其枚举。它们被指定为“枚举类”关键字。他们不会在周围的范围内导出其枚举数。
Static_assert和类型特征-在编译时执行断言检查。如果断言为真,则不显示其他任何内容,并显示错误消息。
基于范围的for循环-C ++ 11引入了基于范围的for循环来迭代集合。现在,可以像C数组一样进行迭代。它支持迭代的“ foreach”范式。
我一直在阅读Unicode的主题 - 特别是,UTF-8 - C 11中的(非)支持,我希望Stack Overflow上的大师可以向我保证我的理解是正确的,或者指出我在哪里误解或遗漏了一些东西,如果是这样的话。 首先,好处是:您可以在源代码中定义UTF-8、UTF-16和UCS-4文本。此外,
更新至英文版January 3, 2012。 译者前言: 经过C++标准委员会的不懈努力,最新的ISO C++标准C++11,也即是原来的C++0x,已经正式发布了。让我们欢迎C++11! 今天获得Stroustrup 先生的许可,开始翻译由他撰写和维护的C++11 FAQ 。我 觉得这是一件伟大而光荣的事情,但是我又觉得压力很大,因为我的英语水平很差劲,同时自己的C++水平也很有限,很害怕在翻译
有关问题: 关于C 11: C 11: std::线程池? C 11中的异步(启动::a同步)会使线程池过时,以避免昂贵的线程创建吗? 关于升压: C提升线程重用线程 提升::线程并创建一个线程池! 我如何获得发送任务的线程池,而不必一次又一次地创建和删除它们?这意味着持久性线程可以在不加入的情况下重新同步。 我有如下代码: 与每次迭代都创建和加入线程不同,我更愿意在每次迭代中将任务发送给我的工作
正如我在cppreference中看到的,经典的“throw”声明列表现在在C++11中被废弃了。离开这个机制的原因是什么?我应该如何指定哪些异常抛出我的函数?
经过 C++ 标准委员会的不懈努力,最新的 ISO C++ 标准 C++11,也即是原来的C++0x,已经正式发布了。让我们欢迎 C++11!
问题内容: 我们最近已从Oracle 10升级到Oracle 11.2。升级后,我开始看到由函数而不是触发器引起的变异表错误(我从未遇到过)。这是旧的代码,可以在Oracle的早期版本中使用。 这是导致错误的情况: 我创建了两行。现在,我将通过调用以下语句将行加倍: 严格来说,复制该错误不是必须的,但稍后对我的演示很有帮助。因此,表的内容现在看起来像这样: 一切都很好。现在是有趣的部分: 我创建了