Commit bd1be768 authored by Milo Yip's avatar Milo Yip

Fix #508 tutorial documentation about move semantics.

parent 9515b9cc
......@@ -280,7 +280,7 @@ A very special decision during design of RapidJSON is that, assignment of value
~~~~~~~~~~cpp
Value a(123);
Value b(456);
b = a; // a becomes a Null value, b becomes number 123.
a = b; // a becomes number 456, b becomes a Null value.
~~~~~~~~~~
![Assignment with move semantics.](diagram/move1.png)
......@@ -305,7 +305,7 @@ Value o(kObjectType);
![Copy semantics makes a lots of copy operations.](diagram/move2.png)
The object `o` needs to allocate a buffer of same size as contacts, makes a deep clone of it, and then finally contacts is destructed. This will incur a lot of unnecessary allocations/deallocations and memory copying.
The object `o` needs to allocate a buffer of same size as `contacts`, makes a deep clone of it, and then finally `contacts` is destructed. This will incur a lot of unnecessary allocations/deallocations and memory copying.
There are solutions to prevent actual copying these data, such as reference counting and garbage collection(GC).
......
......@@ -280,7 +280,7 @@ Value a(kArrayType);
~~~~~~~~~~cpp
Value a(123);
Value b(456);
b = a; // a变成Null,b变成数字123
a = b; // a变成数字456,b变成Null
~~~~~~~~~~
![使用移动语意赋值。](diagram/move1.png)
......@@ -304,7 +304,7 @@ Value o(kObjectType);
![复制语意产生大量的复制操作。](diagram/move2.png)
那个`o` Object需要分配一个和contacts相同大小的缓冲区,对conacts做深度复制,并最终要析构contacts。这样会产生大量无必要的内存分配/释放,以及内存复制。
那个`o` Object需要分配一个和contacts相同大小的缓冲区,对`contacts`做深度复制,并最终要析构`contacts`。这样会产生大量无必要的内存分配/释放,以及内存复制。
有一些方案可避免实质地复制这些数据,例如引用计数(reference counting)、垃圾回收(garbage collection, GC)。
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment