如何创建一个不能被其他类继承的类?

时间:2016-08-10 10:26:41

标签: c++ inheritance

任何人都可以告诉如何创建类,以便它不能被任何其他类继承。

class A {
  public :
          int a;
          int b;
};

class B : class A {
   public :
           int c;
};

在上面的程序中我不想让其他类继承B类

2 个答案:

答案 0 :(得分:13)

标记类final(自C ++ 11起):

class A final {
public :
    int a;
    int b;
};

答案 1 :(得分:5)

如果您使用的是C ++ 11或更高版本,则可以使用final关键字,就像提到的其他答案一样。 这应该是推荐的解决方案。

但是,如果必须使用C ++ 03 / C ++ 98,您可以创建类的构造函数private,并使用工厂方法或类创建此类的对象。

class A {
private:
    A(int i, int j) : a(i), b(j) {}
    // other constructors.

    friend A* create_A(int i, int j);
    // maybe other factory methods.
};

A* create_A(int i, int j) {
    return new A(i, j);
}
// maybe other factory methods.