在前面的文章《深入理解C++中的move和forward》中,我们提到了为了避免对数据进行复制,在C++11中增加了move语义;
本文继续这个话题,来聊聊关于编译器优化中的RVO;
关于前一篇文章:
源代码:
在前面的文章《深入理解C++中的move和forward》中,我们提到了为了避免对数据进行复制,在C++11中增加了move语义;
本文继续这个话题,来聊聊关于编译器优化中的RVO;
关于前一篇文章:
源代码:
GoogleTest是Google开源的一个测试框架,使用这个框架我们可以很方便的对我们的项目进行测试;
本文讲述了GoogleTest的基本使用;
源代码:
在C++11标准之前,C++中默认的传值类型均为Copy语义,即:不论是指针类型还是值类型,都将会在进行函数调用时被完整的复制一份!
对于非指针而言,开销及其巨大!
因此在C++11以后,引入了右值和Move语义,极大的提高了效率;
本文介绍了在此场景下了两个常用的标准库函数:move和forward;
源代码:
fmt库是一个先进的文本格式库,具有现代语言的特征,用来代替C的stdio和C++中的iostreams;
本文讲解了如何使用C++的开源库:fmt;
源代码:
开源库地址:
Source Code:
In this passage we will talk about Object Slicing in C++(A very common occurrence in OOP).
For historical reasons, and for compatibility with C, string literals are not standard library strings in C++.
This passage shows a simple way to accomplish this.
在上一篇文章《cmake生成动态链接库dll》中,我们编写C++并生成了DLL库;
但是DLL库不仅可以被C系的编程语言调用,也可以被其他编程语言调用;
本文给出了较为流行的几种编程语言的DLL调用实例:
源代码:
系列文章:
本文讲解了如何使用cmake将C++代码生成DLL库;
源代码:
系列文章:
RAII(Resource Acquisition Is Initialization)是由C++之父Bjarne Stroustrup提出的,中文翻译为资源获取即初始化,即使用局部对象来管理资源的技术称为资源获取即初始化;
本文通过一个例子来讲述C++中的RAII;
源代码:
本文转自:
在现代编程语言中,无论是Java这种基于JVM的语言,还是Golang这种直接生成Native的语言,都存在自己的GC;
由于GC的存在,我们可以肆无忌惮的申请内存并创建对象而不必手动的释放内存空间;而对于GC中的垃圾清理,我们也仅仅是停留在理论学习中;
本文带大家使用C++实现一个简单的GC,以实际代码理解GC的实质;
源代码: