随笔分类 -  c++

摘要:c++是C的超集,不可避免的要兼容C的特性,C++在C基础山的拓展部分叫做C with class,同时C++有自己特有的属性比如模板template. C并不完全是C++的子集. 那么如何在C/C++中设计接口,实现相互调用呢?我们经常在C++代码中看见extern C的语句,那么其目的是什么呢? 阅读全文
posted @ 2019-07-19 14:09 kkshaq 阅读(3743) 评论(0) 推荐(0)
摘要:multiple threads synchronization primitive: 多线程同步语义 多线程的同步语义是多线程编程的核心,线程之间通过同步语义进行通信,实现并发。C++ JAVA 中线程同步的基本原语是condition variable 和mutex构成的管程 ,OS操作系统课程 阅读全文
posted @ 2019-05-09 17:06 kkshaq 阅读(576) 评论(0) 推荐(0)
摘要:c++ 的初始化过程比较复杂:根据对象的storage duration来分类。所谓storage duration是对象而言的,Storage duration is the property of an object that defines the minimum potential life 阅读全文
posted @ 2019-03-15 16:06 kkshaq 阅读(380) 评论(0) 推荐(0)
摘要:完美转发是c++11 引入右值引用之后,在template 中的延伸. 顾名思义,完美转发是将参数不改变属性的条件下,转发给下一个函数. 因为普通函数的参数一旦具名,始终都是lvalue. 如果把rvalue转发到下一个函数上的参数中,还是rvalue.这就是完美转发的目的。 那么如何支持完美转发呢 阅读全文
posted @ 2019-02-27 17:19 kkshaq 阅读(220) 评论(0) 推荐(0)
摘要:C++11 引入了右值引用的概念,由此在引出 an rvalue reference to a cv-unqualified template parameter. 在template function 推导中,我们需要推导出template parameter. 那么template functi 阅读全文
posted @ 2019-02-27 15:01 kkshaq 阅读(265) 评论(0) 推荐(0)
摘要:本质的原因:raw data和引用计数的管理块,可能是分开的 使用场景: 需要在对象中得到shared ptr, 错误的代码:直接构造新的shared_ptr<A>对象,两个shared_ptr objects 是独立的,pointer to the same raw mem. 两个独立的manag 阅读全文
posted @ 2019-02-25 13:09 kkshaq 阅读(1076) 评论(0) 推荐(0)
摘要:C++ defaul construct :缺省构造函数(默认构造函数)定义:第一种 构造函数没有参数,即是 A()形式的 第二种 构造函数的全部参数由缺省值提供,A(int a=0,int b=0)编译器添加的默认构造函数的条件: 如果创建一个类你没有写任何构造函数,则系统会自动生成默认... 阅读全文
posted @ 2015-08-02 21:09 kkshaq 阅读(1764) 评论(0) 推荐(0)
摘要:预备知识:c++中我们cpp文件和.h文件的区别是,cpp文件是需要编译的文件,成为一个独立的编译单元,而h文件从来是不需要编译,只是用于预处理。通常我们在cpp文件中,完成函数的实现,然后在h中则是对于函数的声明,由于默认情况下,全局变量和全局函数存储类型都是extern类型的,所以我们不需要显示... 阅读全文
posted @ 2015-07-19 23:01 kkshaq 阅读(64157) 评论(1) 推荐(3)
摘要:const int a=10;涉及到一个叫常量折叠的概念(认为我这说得太简单或者不好理解的可以google一下它获取更多信息), 即编译器虽然会给a分配空间(如果取a的地址进行操作的时候,会强迫编译器进行内存分配), 但是在预编译阶段, 会把所有的a用10替换(这就有点像#define了), 所以虽... 阅读全文
posted @ 2015-05-31 22:34 kkshaq 阅读(642) 评论(0) 推荐(0)