C++学习之路-C++11的新特性

C++标准的发展

现在企业级的C++更多的采用C++11标准。因此,我们在本节讲述C++11标准相对于C++03所引入的新特性。

在这里插入图片描述

auto

  • 可以从初始表达式中推断出变量的类型,大大简化编程工作

    在这里插入图片描述

这属于编译器特性,不影响最终的机器码质量,不影响运行效率。意思就是写auto和写int,生成的二进制代码一样,只不过auto更华丽一些。但同时多了缺点:不清晰。

decltype

  • 可以获取变量的类型
    在这里插入图片描述

nullptr

  • 用来表示空指针
int *ptr = NULL;  // 不推荐使用
int *ptr = nullptr;  //推荐使用

以后声明空指针全部采用nullptr,不采用NULL。因为NULL其实就是数字0,整型数字:0。

为什么不推荐呢?下面举个例子说明:定义两个重载函数,一个传整型,一个传指针

void func(int v) {
	cout << "void func(int v) " << endl;
}

void func(int *v) {
	cout << "void func(int *v) " << endl;
}

我想请问一下,传入NULL会执行哪个函数?

func(NULL);

结果是执行的整型函数,因为NULL=0。但是这种写法在98标准中就会报错,因为会产生二义性。C++11修复了这个bug,我们可以通过传入nullptr,达到调用第二个的目的

func(nullptr);

所以说,nullptr是专业的空指针,NULL是专业的0和不专业的空指针。

快速遍历

定义一个数组,然后循环遍历打印。我们可能会这样做:

int array[] = { 1,2,3,4,5 };
for (int i = 0; i < 5; i++) {
	cout << array[i] << endl;
}

但是C++11推出快速遍历写法:

int array[] = { 1,2,3,4,5 };
for (int i : array) {
	cout << i << endl;
}

格式是:

for(数据类型 元素 : 数组)
{
	// do something 元素
}

这与python中的循环一样

for i in array:
	# do something i

只不过C++将in换成了 “ :”。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值