【发布时间】:2016-04-07 06:19:39
【问题描述】:
当父类受到保护时,我有一个关于继承类的默认构造函数的问题,在我看来,子类也会有一个默认构造函数,但事实并非如此。
除了在子类上强制默认构造函数之外,还有其他方法可以强制保护默认构造函数吗?
C++11 - gcc 版本 5.3.1 20151219 (Debian 5.3.1-4)。
int main ( int argc, char ** argv )
{
using namespace std;
class A
{
public:
static std::shared_ptr<A> CreateInstance ()
{
A * pInstance { new A };
return { pInstance, []( A * pInstance )
{
delete pInstance;
}};
};
protected:
A () = default;
~A () = default;
};
class B : public A
{
};
B b; // It's work !
return 0;
}
感谢您的帮助,
WCdr
【问题讨论】:
-
没有。基类通常不能“强制”派生类做任何事情。
-
@WCdr 你真的是想问是否有办法阻止 B 直接实例化?
标签: c++ c++11 inheritance constructor default