首页 > 编程语言 > 详细

C/C++ C++11新特性

时间:2020-02-11 20:49:39      阅读:71      评论:0      收藏:0      [点我收藏+]

C++11中的11表示2011年的C++标准。

 

1、右值引用(rvalue reference)和移动(move)语义

1)作用:避免右值拷贝,而只是“移动”,减少拷贝开销。

2)右值:没有名字,不能取地址,不能修改。左值和右值没有严格的定义。

3)移动语义:

 

2、constexpr(常量表达式)

编译期 

 

3、类型推导,通过auto和decltype两个关键字来实现。

1)auto

1.1)auto不能修饰函数形参。

2)decltype

 

4、Lambda表达式

 

5、nullptr(空指针),只表示指针(不是0),并且可以隐式转换成其他任何类型的指针。

NULL是一个宏,值由编译器的具体实现决定。通常,C中是0或者(void*)0,C++中是0(因为void*不可以隐式转化成其他类型的指针)。

// 函数重载
void foo(int) {}     // #1
void foo(char*) {}   // #2
int main() {
    foo(NULL); // C++中调用#1
}
void foo(int) {}     // #1
void foo(char*) {}   // #2
int main() {
    foo(nullptr); // 调用#2
}

  

6、基于范围(range based)的for循环

int arr[5] = {1, 2, 3, 4, 5};
// 简化for循环的写法。引用是为了修改原值,可以不是引用。
for(int &x : arr) 
{
    x *= 2; 
}

 

7、列表初始化

8、元组

 

减少拷贝性能开销。

移动构造函数

std::move:让对象可以移动

std::forward 

std::array

 

auto_ptr

unique_ptr

 

 

 

参考链接:

https://en.wikipedia.org/wiki/C++11

https://www.cnblogs.com/nothx/p/8523191.html

https://blog.csdn.net/jiange_zh/article/details/79356417

 

C/C++ C++11新特性

原文:https://www.cnblogs.com/yangwenhuan/p/12218143.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!