From 23244c60c68cca6fc32aa56000aeec8058aacad9 Mon Sep 17 00:00:00 2001 From: iccz <313368171@qq.com> Date: Tue, 9 Feb 2016 11:49:13 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=BC=BA=E5=A4=B1=E7=9A=84?= =?UTF-8?q?=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- google-cpp-styleguide/magic.rst | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/google-cpp-styleguide/magic.rst b/google-cpp-styleguide/magic.rst index 9ff1f0e..ff7f402 100644 --- a/google-cpp-styleguide/magic.rst +++ b/google-cpp-styleguide/magic.rst @@ -37,6 +37,19 @@ Google 用了很多自己实现的技巧 / 工具使 C++ 代码更加健壮, 我 * 某些极端情况下,所有权被共享的对象永远不会被销毁,比如引用死循环(cyclic references)。 * 智能指针并不能够完全代替原生指针。 +决定: + + 如果必须使用动态分配,倾向于保持分配者的所有权。如果其他地方要使用这个对象,最好传递它的拷贝,或者传递一个不用改变所有权的指针或引用。倾向于使用 ``std::unique_ptr`` 来明确所有权传递,例如: + + .. code-block:: c++ + + std::unique_ptr FooFactory(); + void FooConsumer(std::unique_ptr ptr); + + 避免使用共享所有权。如果对性能要求很高,并且操作的对象是不可变的(比如说 ``std::shared_ptr`` ),这时可以用共享所有权来避免昂贵的拷贝操作。如果确实要使用共享所有权,倾向于使用 ``std::shared_ptr`` 。 + + 不要在新代码中使用 ``scoped_ptr `` ,除非你必须兼容老版本的C++。总是用 ``std::unique_ptr`` 代替 ``std::auto_ptr`` 。 + 4.2. cpplint ~~~~~~~~~~~~~~~~~~~~~~~~