【C++】C++14新特性
C++14新特性
- 泛型Lambda表达式
- 二进制面量
- 返回类型推断(Return Type Deduction)
- 标准库增强
- std::make_unique
- std::exchange
泛型Lambda表达式
基本语法
[capture](parameters) -> return_type {// 函数体
}
- capture:捕获外部变量(值或引用)
- parameters:参数列表
- -> return_type:返回类型(可省略,由编译器自动推导)
- {}:函数体
实例 : 【C++】C++11新特性(lambda表达式)
二进制面量
在 C++14 中,标准引入了对 二进制字面量(Binary Literals) 的支持,允许你直接使用 二进制形式 来表示整数常量。
基本语法 :0b(0B)数字;
特性 | 支持情况 |
---|---|
前缀 | 0b 或 0B |
数据类型 | 整型(如 int, long, long long) |
分隔符(可读性) | C++14 支持 ’ 分隔符,例如:0b1100’1100 |
后缀 | 可以加后缀如 u(无符号)、l(长整型)、ll 等 |
实例:
返回类型推断(Return Type Deduction)
使用auto作为返回类型:在C++14中,你可以使用auto作为函数的返回类型,让编译器根据返回语句中的表达式自动推断出函数的实际返回类型。
注意:多个return返回类型要一致。
虚函数不能使用auto作为返回类型
标准库增强
std::make_unique
- C++11 只有 make_shared,C++14 补充了 make_unique。
- 更安全、更简洁地创建 unique_ptr。
auto ptr = std::make_unique<int>(42); // 推荐用法std::unique_ptr<int> ptr(new int(42)); // C++11 及以前std::cout << *ptr << std::endl; // 输出 42
std::exchange
- 将一个变量设置为新值,并返回旧值。
- 避免重复写临时变量。
int old_value = std::exchange(var, new_value);
// 等价于:
// int old_value = var;
// var = new_value;