06-现代C++有哪些新特性

本文介绍了C++11及后续版本引入的新特性,包括基于范围的for循环、类型推导(如auto和decltype)、大括号初始化、静态断言、特种成员函数的规则,以及override和final关键字的使用。这些新特性提升了C++的易用性和效率,使得代码更加简洁和清晰。
摘要由CSDN通过智能技术生成

前言

C++在1978年就由Bjame Sgoustrup在Bell实验室发明出来,但是第一次标准化已经是十多年后的1994年了。发布了第一个国际通用标准C++,C++98。此后十多年里没有更新,直到2011年发布了C++11。从C++11过后C++标准委员会平均3年发布一个版本,今年也是C++20发布。但是他的小弟Java自从1996年Sun公司发布第一个开发工具包JDK1.0开始,平均一年一个小版本,三年一个大版本。这一点上C++还是落后了,但是在C++11之后C++的现代化历程开始了,也带来一些易用性的提升,我们就来看一看这部分提升到底有什么效果。

高级for

在C++11之前,如果我们需要对一个vector或者list进行遍历,我们通常需要使用迭代器。方法如下

for (vector<int>::iterator i = vec_int.begin(); i != vec_int.end(); i++)
{
   
	cout << *i << " ";
}

但是C++11引入了一个基于范围的for循环,使用方法for(int temp : vec_int)。其中int替换为容器内的类型,temp是一个临时变量,vec_int是一个容器。这样上面这个代码就可以精简为

for (int temp : vec_int)
    {
   
        cout << temp << " ";
    }

这是两种方法的结果
在这里插入图片描述

可以看出来的是原有的for循环方式能够实现的方式在新版for循环方式中都可以实现。所以在C++11的工程中尽量使用新版for循环。

  • 使用条件: 容器必须提供begin()end()函数,并且容器边界确定。其实这两个条件在旧版C++中可以用iterator+for可以实现那么在新版的for循环中也可以实现。

类型推导

auto

很多知道C++是静态类型语言但是这个auto来的就很奇特。下面我们就来看看这个·auto是如何使用的。

int i = 50;
auto temp = i;
cout << "i  ‘s  type : " << typeid(i).name() << endl;
cout << "temp‘s type : " << typeid(temp).name() << endl;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值