class NotCopyable
{
public:
NotCopyable() { }
private:
NotCopyable(const NotCopyable&);
NotCopyable& operator = (const NotCopyable&);
};
class BasicTimer : private NotCopyable
{
public:
...
}
使用私有继承是否正确?
答案 0 :(得分:1)
是的,这是一个完全可以接受的 - 甚至是普通的 - 使用私人会员可见性。这样可以防止你复制NotCopyable
或其衍生的任何内容。
答案 1 :(得分:1)
是
Boost完全相同。
答案 2 :(得分:0)
NotCopyable的构造函数是公共的,因此它在derive类中始终可用,无论此类是作为private,public还是protected继承。所以私有继承在这里没有做任何特殊的事情
答案 3 :(得分:0)
这是完全可以的,甚至是推荐的。
精心设计的boost库提供了boost :: noncopyable,基本上就是这样。它使您的代码更易读。谁想把这个
class Bla
{
// bla bla bla...
private:
Bla( const Bla & ); // not implemented.
Bla & operator=( const Bla & ); // not implemented.
};
什么时候可以写下面的内容?
class Bla : boost::noncopyable
{
// bla bla bla...
};