摘要:
静态成员的初始化 静态成员——不能在类内初始化 在C++中,类的静态成员(static member)必须在类内声明,在类外初始化: class A { private: static int count ; // 类内声明 }; int A::count = 0 ; // 类外初始化,不必再加st 阅读全文
摘要:
转载,原文出处:C++智能指针 原理、使用与实现。讲得清晰简洁,适合快速了解智能指针的基本原理。 智能指针的作用 C++程序设计中使用堆内存是非常频繁的操作,堆内存的申请和释放都由程序员自己管理。程序员自己管理堆内存可以提高了程序的效率,但是整体来说堆内存的管理是麻烦的,C++11中引入了智能指针的 阅读全文
摘要:
关键词 编译器优化,多线程并行,非临界区共享对象 volatile修饰符 volatile 类似于大家所熟知的const也是一个类型修饰符,用于指示编译器对它所修饰的对象不应该执行优化。多见于多线程编程中的“共享”环境中。 定义为volatile的变量是说这变量可能会被意想不到地改变,即在你程序运行 阅读全文
摘要:
C++中的类型转换分为:隐式类型转换和显式类型转换。 隐式类型转换 关于隐式转换原则,这篇文章中有详细讲解:混合运算中不同数据类型之间的转换原则(C语言),在此简略带过。 1) 算术转换(Arithmetic conversion) 在混合类型的算术表达式中, 最宽的数据类型成为目标转换类型。 in 阅读全文
摘要:
左值与右值 全文翻译自:https://eli.thegreenplace.net/2011/12/15/understanding-lvalues-and-rvalues-in-c-and-c 典型错误 //gcc int foo() {return 2;} int main() { foo() 阅读全文
摘要:
前言 网上关于C++对象模型的资料有很多,找到了两篇较为详实细致,理论与实践结合得较好,图文并茂的文章,在此做个总结转载,用以巩固与温故。(之所以是两篇,是因为这两篇内容大体一致,但出处却是两位作者,不知是谁原创,索性做个汇总。。。原文中存在多处错误或语义表述不清,已做修正补充) 图文和代码源自两处 阅读全文
摘要:
转载 这篇RTTI实现详解写得很好,转载备份,常温常新! 正文 在使用C++进行面向对象编程时,我们经常用到RTTI(Run Time Type Identification,运行时类型识别)。我们常常使用 typeid 判断某个对象的类型, dynamic_cast 动态转换对象的指针或引用类型。 阅读全文
摘要:
一句话总结 指针分配内存,有地址(编译器和程序员看来),属于一个类型变量,支持取地址与解引用操作。 引用分配内存,有地址(编译器看来),相当于一个变量别名,不支持取地址与解引用操作(即不可获取其本身地址),声明即必须初始化,不可变更引用对象,本质上是“pointer const”。 推荐阅读 快速理 阅读全文