-6
我正在解决一些基本的遗传问题。我遇到了一些我不了解逻辑的东西。如果我从Base类继承派生类作为私有类,我是否可以访问Base类的公共成员。这里是我的代码,与公共,私人和受保护区别
#include <iostream>
struct Shape
{
virtual void print()
{
std::cout << "SHAPE" << std::endl;
}
virtual ~Shape() {}
};
struct Box : private Shape
{
virtual void print()
{
std::cout << "BOX" << std::endl;
}
};
int main(int argc, char** argv)
{
Shape* s = new Box; //illformed ? can't access the public members of the base.
s->print();
delete s;
return 0;
}
问问你的老师,看书 –
你的C++编译器坏了。 gcc 7.1.1正确地发布了一个诊断,并且无法编译代码:'错误:'Shape'是'Box''的一个不可访问的基地 –
所以它的意思是,如果我继承为Private,形状不可访问框。是?类似于我们无法访问课堂外的私人成员。 – Bob11