C++11 新特性及原理(一、基础篇)

本文介绍了C++11的四个关键新特性:auto类型推导增强代码可读性,nullptr提供安全的空指针,基于范围的for loop简化容器遍历,以及右值引用和移动构造函数提高性能。这些特性旨在使C++11代码更加优雅、安全和高效。
摘要由CSDN通过智能技术生成

C++11 新特性及原理(一、基础篇)

目录

C++11 新特性及原理(一、基础篇)

引言

开篇

一、auto 初始化类型推导(优雅性,修补缺陷)

二、nullptr(安全性,修补缺陷)

三、基于范围的 for loop(优雅性)

四、右值引用及移动构造函数(提高性能)


引言

一转眼的功夫国庆7天假期已快结束,开始倒计时准备整理心情开始新的征程,几天的颓废终于开始清醒,整理下很久前的知识,打算把他们梳理成文章分享给大家,当然网上有很多类似的文章,希望我的角度能给大家带来新的理解。

开篇

C++11新增了100多个新特性,修补了C++98/03中的600多个缺陷,使C++11编写代码更加便捷更加高效和优雅。GCC从4.8.1才完全支持C++11标准,使用GCC4.8以上编译器编译时需要添加-std=c++11选项,才能开启编译器对C++11标准的支持。下文选取了一些C++11新特性,主要针对我们在实际开发场景中,以编码规范为基准,选择这些特征的原则如下:

1、优雅性:适当的使用该特性便于代码的阅读及维护(减少代码冗余)。 

2、谨慎原则:该特性比较“安全”,没有太多的“坑”。

3、健壮及约束性:使用该特性,能让代码更加的健壮,提升编码质量。

4、高效性:使用该特性能提高代码执行效率,节省系统资源。

注意:以下代码均使用g++ (GCC) 4.8.5 20150623 (Red Hat 4.8.5-4) 版本进行的编译

一、auto 初始化类型推导(优雅性,修补缺陷)

早在C++98标准中就存在了auto关键字,那时的auto用于声明变量为自动变量,自动变量意为拥有自动的生命期,这是多余且极少使用的,因为就算不使用auto声明,变量依旧拥有自动的生命期。

C++11取而代之的是全新的auto,变量的初始化类型推导。

C++11 auto 举例:

auto nVal = 1;                     // int
auto fVal = 1.3284 + 6;            // double auto会做隐式类型转换进行类型提升
auto strVal = "Hello World";       // string
const auto& strTmp = strVal;       // const string&

std::unordered_multimap<std::string, std::string>::iterator  dictIter = dict.begin();
auto dictIter = dict.begin();      // 等同于上面语句
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值