C++11新特性

自动识别类型

//自动识别类型
auto a = 5.6;
//decltype取类型
decltype(a) b = 5;

专用空指针nullptr

auto p = new int();
//空指针
p = nullptr;
cout << p<< endl;

快速遍历

//快速遍历
int array[] = { 11,22,33,44,55,66 };
for (int item : array)
{
	cout << item << endl;
}

更加简洁的初始化方式

int array1[]{ 11,22,33,44,55,66 };

Lambda表达式

Lambda表达式是一个匿名函数(把函数名用[ ]代替),一般用一个指向函数的指针指向函数,方便调用

void (*p2)() = []() {
	cout << "lambda func()" << endl;
};
p2();

简单的操作是直接用auto

auto p1 = [] (){
	cout << "lambda func()" << endl;
}; 
p1();

有返回值时

auto p3 = [](int a, int b) ->int{
	return a + b;
};
cout << p3(10, 20) << endl;

直接调用的写法,qt中的connect常用到Lambda表达式

([]() {
	cout << "lambda func()----------------p2" << endl;
});

捕获外部,写在[ ]里面,或者写=

([a,b]() {
	cout << "lambda func() = "<<a+b << endl;
});

捕获外部地址里面的值,上面的捕获方式是a=10,就把10传进去,a=20也不会引起输出改变,而下面的方式是从地址取值,a变成20,捕获的值就变成20了,当然也可以认为是引用

([&a,b]() {
	cout << "lambda func() = "<<a+b << endl;
});

关键字:mutable,值捕获时可以对表达式内部的值进行改变
在这里插入图片描述

int a = 1;
([a]() mutable{
	a++;
	cout << "a = "<<a << endl;
});

可省略的写法:1.可以不写返回值类型 2.没有输入参数时,可以不写小括号

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值