如何使类完全不可导出。有什么办法吗?

时间:2009-10-24 03:47:56

标签: c++ class inheritance

嗨,任何人都让我知道如何使课程根本不可导出。有什么办法吗? 请告诉我。 问候 原

4 个答案:

答案 0 :(得分:6)

Bjarne Stroustrup(C ++自己的创造者)参见this关于如何做到这一点的解释,以及为什么它可能不是一个好主意。

答案 1 :(得分:4)

如果您的类具有私有构造函数,则无法实例化派生类。

请参阅C ++ FAQ Lite上的"How can I set up my class so it won't be inherited from?"

答案 2 :(得分:3)

将ctor(s)设为私人。

class not_derivable { private: not_derivable(){} };

class derived : public not_derivable {};

int main() { derived d; // diagnostic }

或者dtor:

class not_derivable { private: ~not_derivable(){} };

class derived : public not_derivable {};

int main() { not_derivable *nd = new not_derivable; derived d; //diagnostic }

答案 3 :(得分:2)

将构造函数设为私有。