这是我难以理解的代码:
class A
{
protected:
int _i;
A () : _i(0) { }
~A () { }
};
class B: public A
{
public:
A *_pa;
B() : A(), _pa(new A())
{ }
~B ()
{
delete _pa;
}
};
int main ()
{
A a; //ERROR
B b; //ERROR
}
当试图实例化一个类型的类时,A
我得到一个错误,因为它的构造函数受到保护。但是为什么我不能实例化一个 type 类B
呢?该类可以访问A
(包括ctor)的受保护成员,因此它应该编译。