https://alexiachen.github.io/blog/2017/02/22/cpp-best-practices/#1-%E5%9F%BA%E6%9C%ACC-%E5%91%BD%E5%90%8D%E8%A7%84%E8%8C%83