摘要:
1. Semaphore 信号量是一种计数器,用来保护一个或者多个共享资源的访问。如果线程要访问一个共享资源,必须先获得信号量。若内部计数器大于0,则减1,若等于0,则线程进入休眠直至计数器大于等于0。Semaphore semaphore1 = new Semaphore(1); // 值为1的... 阅读全文
摘要:
条款7辨别使用()与{}创建对象的差别基础知识 目前已知有如下的初始化方式:int x(0);int y = 0;int z{0};int z = {0}; // the same as above 在以“=”初始化的过程中没有调用赋值运算,如下例所示:Widget w1; // default... 阅读全文
摘要:
条款6当推断意外类型时使用显式的类型初始化语句基础知识 当使用std::vector的时候,类型推断会出现问题:std::vector features(const Widget& w);// OKbool highPriority = features(w)[5];processWidget(w... 阅读全文
摘要:
条款5相对显式类型声明,更倾向使用auto基础知识 auto能大大方便变量的定义,可以表示仅由编译器知道的类型。templatevoid dwim(It b, It e) { while(b != e) { //typename std::iterator_traits::va... 阅读全文
摘要:
条款四知道如何看待推断出的类型基础知识有三种方式可以知道类型推断的结果:IDE编辑器编译器诊断运行时输出使用typeid()以及std::type_info::name可以获取变量的类型信息,但是存在一些问题,代码如下:templatevoid f(const T& param) { usin... 阅读全文
摘要:
条款三 了解decltype基础知识提供一个变量或者表达式,decltype会返回其类型,但是返回的内容会使人感到奇怪。以下是一些简单的推断类型:const int i = 0; // decltype(i) -> const intbool f(const Widget& w); // declt... 阅读全文
摘要:
条款二 了解auto类型推断基础知识除了一处例外,auto的类型推断与template一样。存在一个直接的从template类型推断到auto类型推断的映射三类情况下的推断如下所示:// case 1const auto& rx = x; // rx -> int// case 2auto&& ur... 阅读全文
摘要:
条款一 了解模板类型推断基本情况首先定义函数模板和函数调用的形式如下,在编译期间,编译器推断T和ParamType的类型,两者基本不相同,因为ParamType常常包含const、引用等修饰符templatevoid f(ParamType param); // 函数模板形式f(expr); // ... 阅读全文
摘要:
8. Introducing Spring BootGoals of spring boot:Provide a radically faster and widely accessible getting started experience for all Spring development.... 阅读全文
摘要:
1. 运算符重载2. 计算时间:一个运算符重载示例3. 友元1. 友元有三种:友元函数友元类友元成员函数4. 重载运算符:作为成员函数还是非成员函数5. 再谈重载:一个矢量类6. 类的自动转换和强制转换1. 类型转换1 int *p = 10; // type clash2 int *q = (in... 阅读全文