#include <iostream>
using namespace std;
int main()
{
cout << "Hello C++11 New Feature!!!" << endl;
// 1、新的遍历方式
int arr[] = {11, 22, 33, 44, 55};
for (auto it : arr)
{
cout << it << endl;
}
// 2、lambda表示式
auto sayHello = []() {
cout << "新的函数指针方式" << endl;
}; // ;分号必须有
sayHello();
// labmda传入参数
auto labmdaTest1 = [](int a, int b) {
return a + b;
}; // ;分号必须有
cout << labmdaTest1(4, 5) << endl;
// labmda按值引用外部变量,不能引用数组类型
int num = 88;
printf("num:%x\n", &num);
auto labmdaTest2 = [=]() {
printf("num:%x\n", &num);
}; // ;分号必须有
labmdaTest2();
// labmda按引用引用外部变量
char str[] = "kk world";
printf("num:%x, str:%x\n", &num, str);
auto labmdaTest3 = [&]() {
printf("num:%x, str:%x\n", &num, str);
}; // ;分号必须有
labmdaTest3();
/*
[=]通过值捕捉所有变量
[&]通过引用捕捉所有变量
[value]通过值捕捉value,不捕捉其它变量
[&value]通过引用捕捉value,不捕捉其它变量
[=, &value]默认通过值捕捉,变量value例外,通过引用捕捉
[&, value]默认通过引用捕捉,变量value例外,通过值捕捉
*/
}
c++11新特性
最新推荐文章于 2024-06-11 17:42:16 发布