Modern C++
kestiny
这个作者很懒,什么都没留下…
展开
-
[笔记]Modern CMake 3:基本介绍
Modern CMake 3:基本介绍组织项目结构CMake没有统一的项目结构,一些常用原则可以帮助我们组织更好的项目结构:项目内部能够十分方便的读取其他工程;避免项目结构冲突;并行构建.一个典型的例子(仅做参考),假设你的项目叫做project,你的库名为lib,可执行程序名为app:- project - .gitignore - README.md - LICE...原创 2019-06-08 21:02:15 · 815 阅读 · 0 评论 -
[笔记]Modern CMake 2:基本介绍
Modern CMake 2:基本介绍最低版本CMakeLists.txt的第一行通常都是:cmake_minimum_required(VERSION 3.1)请注意,cmake_minimun_required是不区分大小写的,但根据Modern CMake 1:Modern CMake简介中的正确模式所言,函数名需要使用小写。在CMake3.12中,对最低版本的要求可以是一个区间,...原创 2019-06-07 20:53:12 · 775 阅读 · 0 评论 -
[笔记]Modern CMake 1:Modern CMake简介
Modern CMake 1:Modern CMake简介运行CMake工程的流程标准选项能做的和不能做的CMake反模式CMake正确模式学习Modern CMake的总结和记录。什么是Modern CMake?指的是CMake3.1+,甚至是CMake3.14+!她是整洁,强大,优雅的,你可以花更多的精力在编码上。CMake3.11+的版本速度上有显著的提升。运行CMake工程的流程...原创 2019-06-02 11:53:31 · 2006 阅读 · 0 评论 -
[笔记]转向Modern C++
转向Modern C++优先使用auto推导类型而非显示类型声明auto变量需要在声明时进行初始化 int x1; // 未初始化的int变量,值的不确定的,可能为0,也可能是别的值 auto x2; // 错误,需要初始化 auto x3 = 0; // 完美auto使变量的声明变得简单,甚至仅仅被编译器知道的类型 aut...原创 2019-07-14 22:14:15 · 219 阅读 · 0 评论 -
[笔记]2.智能指针
文章目录智能指针std::unique_ptrstd::shared_ptrstd::weak_ptr智能指针原生指针是一款很强大的工具,但是依据进数十年的经验,可以确定的一点是:稍有不慎,这 个工具就会反噬它的使用者。C++11标准中规定了四个智能指针:std::auto_ptr,std::unique_ptr,std::shared_ptr,std::weak_ptr.他们都是用来辅助...原创 2019-07-16 08:21:36 · 167 阅读 · 0 评论 -
[笔记]右值引用
右值引用左值和右值C++中,左值指的是表达式结束后仍然存在的持久化对象,右值是表达式结束后就不在存在的临时对象。所有的具名变量都是左值,而右值不具名。简单区分左值和右值:左值能够取到地址,而右值不能。int i = 0; // i是左值,0是右值class Widget;W getWidget(){ return Widget();}Widget w = ge...原创 2019-07-25 22:43:15 · 161 阅读 · 0 评论 -
[笔记]移动语义和完美转发
移动语义和完美转发std::move、std::forwardstd::move是执行转换的函数模板。std::move无条件的将它的参数转换成一个右值。std::move本身不move任何东西,也不产生可执行代码。std::forward是执行转换的函数模板。std::forward当参数被绑定为右值时才将它的参数转换成一个右值。std::forward不转发任何东西,也不产生可执行代码。...原创 2019-07-25 22:43:48 · 444 阅读 · 0 评论 -
[笔记]Lambda 表达式
Lambda 表达式Lambda表达式是C++中的语法糖。形式一般Lambda表达式形如:[capture](parameters)->return-type{body}如果没有参数,空的()可以省略。返回值也可以省略。举例:std::sort(x, y, [](float a, float b){return std::abs(a) < std::abs(b);});...原创 2019-07-22 20:53:24 · 341 阅读 · 0 评论