这是使用私有继承的权利吗?

时间:2011-08-06 02:25:45

标签: c++

class NotCopyable
{
public:
    NotCopyable() { }
private:
    NotCopyable(const NotCopyable&);
    NotCopyable& operator = (const NotCopyable&);
};

class BasicTimer : private NotCopyable
{
public:
      ...
}

使用私有继承是否正确?

4 个答案:

答案 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...
};