c++不自动生成相关函数比如赋值、拷贝函数

  默认情况下,如果没有明确声明某些函数比如赋值、拷贝函数,c++会自动生成这些函数,通常他们是对成员进行by-value拷贝。如下:

  

   有些时候,赋值、拷贝对象并无什么意义或者不合理,比如对于socket或者thread而言,这种情况下,可以明确通过指定=delete告知编译器不要自动生成它们。如下所示:

class thread_guard
{
    std::thread& t;
public:
     explicit thread_guard(std::thread& t_):
    t(t_)
    {}
    ~thread_guard()
    {
        if(t.joinable())
        {
            t.join();
        }
    }
     thread_guard(thread_guard const&)=delete;
     thread_guard& operator=(thread_guard const&)=delete;
};

 

posted @ 2017-02-02 18:40  zhjh256  阅读(189)  评论(0编辑  收藏  举报