c++14特性

C++ 14

函数返回值类型推导

c++14 对函数返回类型推导规则做了优化:

auto func(int i) {
    return i;
}

返回值类型推导也可以用在模板中:

template<typename T>
auto func(T t){
    return t;
}

注意:

  • 函数内如果有多个return语句,必须返回相同的类型,否则编译失败
  • 如果return语句返回初始化列表,返回值类型推导也会失败
  • 如果函数是虚函数,不能使用返回值类型推导

lambda参数auto

c++11中,lambda表达式参数需要使用具体的类型声明:

auto func1 = [](int a){ return a; };

在c++14中,对此进行了优化,lambda表达式参数可以直接是auto:

auto func1 = [](auto a){ return a; };

std::make_unique

c++11中只有std::make_shared,c++14中增加了std::make_unique。

class TestA {
};

std::unique_ptr<A> ptr = std::make_unique<A>();

std::shared_timed_mutex 与 std::shared_lock

c++14通过std::shared_timed_mutex和std::shared_lock来实现读写锁,保证多个线程可以同时读,但是写线程必须独立运行。

实现方式如下:

class TestA {
public:
    TestA(): value_(0) {
    }
    
    int GetValue() const {
        std::shared_lock<std::shared_timed_mutex> readLock(mutex_);
        return value_;
    }
    
    void SetValue(int v) {
        std::unique_lock<std::shared_timed_mutex> writeLock(mutex_);
        value_ = v;
    }
private:
    int value_;
    // mutable 可变的,被mutable修饰的变量,将永远处于可变的状态,即使在一个const函数中。
    mutable std::shared_timed_mutex mutex_;
};
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值