在C++中,我可以阻止派生类由除朋友之外的类实例化

01z*_*hou 5 c++ oop

在C++中,如果我有一个抽象基类,是否可以防止其派生类由基类知道的朋友以外的类实例化?

小智 7

您可以将构造函数定义为私有,就像任何其他函数一样.例如:

class foo
{

friend foo *FooConstructor(void);

public:
  void Method();
  void Method2();

private:
  foo();
  foo(const &foo);
};

foo *FooConstructor(void) 
{ 
  return new foo(); 
}
Run Code Online (Sandbox Code Playgroud)

这可以防止foo以任何方式创建,除了该FooContructor功能.