C++
文章平均质量分 53
Catelemmon
额 猜猜我会写不
展开
-
C++内存管理简述(一)
1.什么叫做堆和栈栈存在某个作用域的一块内存空间,例如当你调用函数,函数本身随即会形成一个stack来房子它所接受的参数,以及返回的地址事实上在C++一个程序的过程序中,主函数先入栈,然后是各种调用的函数入栈,然后随着return,就出栈 堆也叫system heap,是由操作系统提供的一块global的空间,程序可以动态分配(dynamic allocated)从其中获得若干的区块 堆里面内存原创 2018-03-30 10:37:30 · 321 阅读 · 0 评论 -
C++线程管理简述
我在学C++线程管理的时候学了发现C++有很多可以帮助管理线程的类 做个整理std::mutex互斥量类, 最基本的一个类, 实例化std::mutext就会产生一个互斥量, 调用成员函数lock和unlock 就可以上锁, 去锁, 很方便, 但是还不够, 我们需要手动的去设置mutex的锁和不锁, 这个很简单就像PV原语一样, 代码如下void critical_zone(string mess原创 2018-04-02 16:15:28 · 1115 阅读 · 0 评论 -
std::function,std::bind
std::functionC++把函数指针也封装成了一个类, 根据cppreference 的描述, std::function几乎可以把任何可以调用的函数封装成了一个类, 以下是cppreference的原话 类模板 std::function 是通用多态函数封装器。 std::function 的实例能存储、复制及调用任何可调用 (Callable) 目标——函数、 lambda 表达式、原创 2018-04-02 18:10:46 · 326 阅读 · 0 评论 -
std::move,std::forward与左右值引用
在讲这个之前, 必须得讲一下左值和右值, 这个知识真的是很冷门又冷门, 如果不是C++11的std::move, 我想我八辈子都不会知道这是什么东西, 晦涩难懂左值简单的来说就是赋值符号左边的值, 准确的来说, 左值就是表达式执行后依然存在的持久的对象右值右边的值,表达式执行过后就不再存在的临时对象, 但是C++肯定是要把编程搞得更复杂的, 所以右值又有纯右值, 和将亡值 纯右值: 纯粹的右值要么原创 2018-04-10 17:29:25 · 483 阅读 · 0 评论 -
std::result_of
编译时类型推导它可以在编译的时候推导出一个函数表达式的返回值类型struct S { double operator()(char, int&); // 这个函数的返回类型是 double };int main() { std::result_of<S(char, int&)>::type foo = 3.14; // 使用这样的写法会推导出模板参数中函数的返回值类型 type原创 2018-04-10 17:34:19 · 3832 阅读 · 1 评论