C++编码风格和准则

C++版本众多,在标准化的发展路上,重要的版本有C++98, C++03, C++11, C++14, C++17。 没有找到真正意义的统计,猜测,C++11是应用最广泛的C++版本之一。C++11引入了许多重要的新特性,如自动类型推导、右值引用、智能指针、Lambda表达式、范围基于for循环等。

cpplint

智能指针

shared_ptr, weak_ptr, unique_ptr

unique_ptr是用于取代c++98的auto_ptr的产物

const

仿函数

匿名函数

参数捕获

左值右值

C++中的每个表达式都有两种独立的特性:类型(type)和值分类(value category)。每个表达式都属于三大value category之一:prvalue,xvalue和lvalue。

右值引用

std::forward

完美转发实现了参数在传递过程中保持其值属性的功能,即若是左值,则传递之后仍然是左值,若是右值,则传递之后仍然是右值。

std::forward()不仅可以保持左值或者右值不变,同时还可以保持const、Lreference、Rreference、validate等属性不变;

std::move

std::move(t) 用来表明对象t 是可以moved from的,它允许高效的从t资源转换到lvalue上.

并行安全的数据结构

Lock

std::unique_lock<std::mutex>

std::lock_guard<std::mutex>

final

final 修饰一个类, 意味着继承该类会导致编译错误 final 修饰是一个方法, 意味着重载该方法会导致编译错误

三方库

folly

abseil

boost

Reference

C++ Template 进阶指南

*****
Written by Lu.dev on 16 May 2019