【发布时间】:2016-12-08 04:06:54
【问题描述】:
我最近一直在阅读移动语义以及它是如何被引入 C++11 的。主要要点是,通过“窃取”指向临时对象的指针来创建对象,程序可以变得更有效率。这比对临时对象进行深度复制以创建新对象要高效得多。
在 C++11(及更高版本)中,这是通过使用右值引用来实现的。所有临时对象(在程序内存中没有已知位置的对象)都被视为右值。具体来说,现在可以重载类构造函数以接受右值引用。
所以我很好奇,在 C++11 之前,这个“昂贵的临时对象复制”问题是如何解决的?
【问题讨论】:
-
谷歌“写时复制”。
-
我想说,您更喜欢新版本 C++ 的动态特性,而不必担心过去。 :P
-
然后您会发现自己的项目仍然绑定到 GCC 3.3,因为这是您维护的硬件可用的最新编译器。很高兴知道一些历史,所以你不必重复它。或者在这种情况下,你可以重复它而无需几周的研究