C++11 引入了哪些重大变化?

What breaking changes are introduced in C++11?(C++11 引入了哪些重大变化?)
本文介绍了C++11 引入了哪些重大变化?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

我知道C++11中至少有一个变化会导致一些旧代码停止编译:在标准库中引入explicit operator bool(),替换旧实例operator void*().诚然,这将破坏的代码可能是一开始就不应该有效的代码,但它仍然是一个破坏性的变化:曾经有效的程序不再有效.

还有其他重大变化吗?

解决方案

FDIS 在附录 C.2C++ 和 ISO C++ 2003"中有一个不兼容部分.

总结,在此处解释 FDIS,使其(更好)适合作为 SO 答案.我添加了一些我自己的例子来说明差异.

有一些与库相关的不兼容问题,我不完全知道其中的含义,因此我将这些问题留给其他人详细说明.

核心语言

<小时>

#define u8 "abc"const char *s = u8"def";//以前是abcdef",现在是def"

<小时>

#define _x "那里""hello"_x//现在是用户定义的字符串文字.以前,扩展 _x .

<小时><块引用>

新关键字:alignas、alignof、char16_t、char32_t、constexpr、decltype、noexcept、nullptr、static_assert 和 thread_local

<小时><块引用>

某些大于 long 可以表示的整数文字可以从无符号整数类型更改为有符号 long long.

<小时><块引用>

使用整数除法的有效 C++ 2003 代码将结果向 0 或向负无穷大舍入,而 C++0x 总是向 0 舍入.

(诚然,对于大多数人来说,这并不是真正的兼容性问题).

<小时><块引用>

使用关键字 auto 作为存储类说明符的有效 C++ 2003 代码在 C++0x 中可能无效.

<小时><块引用>

缩小转换会导致与 C++03 不兼容.例如,以下代码在 C++ 2003 中有效,但在本国际标准中无效,因为 double 到 int 是一种收缩转换:

int x[] = { 2.0 };

<小时><块引用>

当隐式定义格式错误时,隐式声明的特殊成员函数被定义为已删除.

一个有效的 C++ 2003 程序在不需要定义的上下文中使用这些特殊成员函数之一(例如,在没有潜在评估的表达式中)变得格式错误.

我的例子:

struct A { private: A();};结构 B : A { };int main() { sizeof B();/* 在 C++03 中有效,在 C++0x 中无效 *
                本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!
                
上一篇:从函数返回 unique_ptr 下一篇:shared_ptr 到数组:应该使用它吗?
相关文档推荐 编译器如何处理编译时分支? What do compilers do with compile-time branching?(编译器如何处理编译时分支?) 我可以使用 if (pointer) 而不是 if (pointer != NULL) 吗? Can I use if (pointer) instead of if (pointer != NULL)?(我可以使用 if (pointer) 而不是 if (pointer != NULL) 吗?) 在 C/C++ 中检查空指针 Checking for NULL pointer in C/C++(在 C/C++ 中检查空指针) 比较运算符的数学式链接-如“if((5<j<=1))" Math-like chaining of the comparison operator - as in, quot;if ( (5lt;jlt;=1) )quot;(比较运算符的数学式链接-如“if((5<j<=1))) “if constexpr()"之间的区别与“if()" Difference between quot;if constexpr()quot; Vs quot;if()quot;(“if constexpr()之间的区别与“if()) C++,'if' 表达式中的变量声明 C++, variable declaration in #39;if#39; expression(C++,if 表达式中的变量声明)
栏目导航 前端开发问题Java开发问题C/C++开发问题Python开发问题C#/.NET开发问题php开发问题移动开发问题数据库问题 最新文章 • LNK2038:检测到“RuntimeLibrary&quo... • 如何使用 VideoWriter 从 OpenCV 打... • C/C++ 中的无限循环... • OSX - 用通过 Homebrew 安装的 4.9 ... • Clang C++ 交叉编译器 - 从 Mac OS X... • 应用程序无法启动,因为它无法找到或... • 如何在 MacOS 上安装 Boost?... • CMakeLists.txt:30 (project) 中的 C... • 基准测试(python 与 C++ 使用 BLAS)... • std::fstream 缓冲与手动缓冲(为什么... • 程序无法启动,因为缺少 libgcc_s_dw... • 如何从 C++ 对象中获取类名?... 热门文章 • LNK2038:检测到“RuntimeLibrary&quo... • 如何使用 VideoWriter 从 OpenCV 打... • C/C++ 中的无限循环... • OSX - 用通过 Homebrew 安装的 4.9 ... • Clang C++ 交叉编译器 - 从 Mac OS X... • 应用程序无法启动,因为它无法找到或... • 如何在 MacOS 上安装 Boost?... • CMakeLists.txt:30 (project) 中的 C... • 基准测试(python 与 C++ 使用 BLAS)... • std::fstream 缓冲与手动缓冲(为什么... • 程序无法启动,因为缺少 libgcc_s_dw... • 如何从 C++ 对象中获取类名?... 热门标签 织梦资讯网 织梦模板 dede 外语学校 织梦鬼故事 竞价网站源码 竞价培训网 门户网站 织梦二次开发 织梦笑话网 dedecms笑话网 织梦源码 网站建设 搞笑图片 织梦教程 旅游网站源码 织梦旅游网 学校培训 html5 企业织梦源码 医院源码 后台样式 移动营销页 整形医院 大学医院 新手建站 客服代码 洗衣机维修 企业网站 淘宝客 导航菜单 教育网站 学校源码 装修网站 装修模板 美容整形 女性健康 妈妈网 机械源码 建站公司 珠宝首饰 苹果网站 手机资讯 美女图片 织梦模版打包 妇科源码 安卓市场源码 男性时尚网 健康之家 app应用网站 笑话网站 下载站 美女图片网 中医院网站 家装网站源码 QQ网站 标牌网站 魔兽世界网 淘宝客源码 YY网站源码 别墅设计网站 服装搭配网 宝宝起名网 站长网站 婚庆网站 脑科医院源码 笑话源码 肝胆医院 意外怀孕源码 工作室
网站首页 - 免责声明- 最新公告- 充值相关 - 网站地图 Copyright © 2022-2023 深圳市沃梦达电子商务有限公司 All Rights Reserved. 粤ICP备14083021号