标签分类:C++

volatile与内存屏障总结

一. 内存屏障 Memory Barrior 1.1 重排序 同步的目的是保证不同执行流对共享数据并发操作的一致性。在单核时代,使用原子变量就很容易达成这一目的。甚至因为CPU的一些访存特性,对某些内存对齐数据的读或写也具有原子的特性。但在多核架构下即使操作是原子的,仍然会因为其他原因导致同步失效。 首先是现代编译器的代码优化和编译器指令重排可能会影响到代码的执行顺序。 其次还有指令执行级别的乱序 …

阅读全文

每周精选技术文章心得 Vol.2-20180603

本周开始除了每日的微信公众号闲来无事的阅读,周末时候再加入些以前知乎或微博收藏的文章来阅读,做到慢慢消化些碎片知识吧。 星期日(知乎特别篇): C++的奇特写法int b = 4[a];,可以用来做type trait/constraint,用来判断一个类型到底是一个重载了[ ](取下标)操作符的用户定义的类(比如vector),还是一个原生的数组或指针。当你的模板希望只处理原生数组或指针,而不希 …

阅读全文

C++中的局部类与嵌套类

局部类指在函数内部定义的类,自然局部类不能含有static成员,所有函数定义也必须在定义体内完成。基本不会使用。

嵌套类指在类内部定义类,该类名只能在外围类中使用,嵌套类中的函数成员可以在定义体外定义(但是需要使用限定符以使用类名),嵌套类中申明的成员不是外围类对象的成员,反之亦然。

因此分析访问关系时,完全可以当做非嵌套类处理,即嵌套类无法访问外围类的私有成员,也不能对外围类中定义的私有嵌套类创建对象,嵌套类可以访问static private成员,嵌套类中申明的友元也不能访问外围类中的私有成员。