booster :: noncopyable有哪些用例?

aug*_*tin 3 c++ boost noncopyable

首先:是boost ::不可复制还是booster ::不可复制。我在不同的地方见过。

为什么要使一类不可复制?您可以举一些示例用例吗?

the*_*ill 5

每当您有一个类,该类具有一个指针作为该类拥有的成员变量(即负责销毁)时,我发现它很有用。除非您使用shared_ptr<>或其他引用计数的智能指针,否则您将无法安全地复制或分配该类,因为在析构函数中,您将需要delete该指针。但是,您不知道是否已获取该类的副本,因此,通过解引用释放的指针将获得双删除或访问冲突。

如果从中继承,noncopyable则有两个好处:

  • 它防止类被复制或分配
  • 通过查看类定义(即自记录代码)可以清楚地了解意图

例如

class MyClass : boost::noncopyable
{ 
   ...
};
Run Code Online (Sandbox Code Playgroud)