C++ 知道禁用 copy-ctor/assign operator 是 C++ 程序员的试金石

来源:互联网 发布:照相机卡数据视频恢复 编辑:程序博客网 时间:2024/06/10 14:49
  • 陈硕CSDN博客 :知道禁用 copy-ctor/assign operator 是 C++ 程序员的试金石

  • vgxpm的专栏:C++之实现禁用 copy-ctor/assign operator : 对其进行了解释,详细阅读

  • 陈硕github/muduo : Singleton.h 的实现中对其对copy-ctor/assign operator进行禁用,利用继承noncopyable,代码: class Singleton : boost::noncopyable

  • boost/core/noncopyable.hpp

//  Boost noncopyable.hpp header file  --------------------------------------////  (C) Copyright Beman Dawes 1999-2003. Distributed under the Boost//  Software License, Version 1.0. (See accompanying file//  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)//  See http://www.boost.org/libs/utility for documentation.#ifndef BOOST_CORE_NONCOPYABLE_HPP#define BOOST_CORE_NONCOPYABLE_HPP#include <boost/config.hpp>namespace boost {//  Private copy constructor and copy assignment ensure classes derived from//  class noncopyable cannot be copied.//  Contributed by Dave Abrahamsnamespace noncopyable_  // protection from unintended ADL{  class noncopyable  {  protected:#if !defined(BOOST_NO_CXX11_DEFAULTED_FUNCTIONS) && !defined(BOOST_NO_CXX11_NON_PUBLIC_DEFAULTED_FUNCTIONS)      BOOST_CONSTEXPR noncopyable() = default;      ~noncopyable() = default;#else      noncopyable() {}      ~noncopyable() {}#endif#if !defined(BOOST_NO_CXX11_DELETED_FUNCTIONS)      noncopyable( const noncopyable& ) = delete;      noncopyable& operator=( const noncopyable& ) = delete;#else  private:  // emphasize the following members are private      noncopyable( const noncopyable& );      noncopyable& operator=( const noncopyable& );#endif  };}typedef noncopyable_::noncopyable noncopyable;} // namespace boost#endif  // BOOST_CORE_NONCOPYABLE_HPP
0 0
原创粉丝点击