我有一个项目具有多级继承.它是这样的
XMLs -> Entity -> Item然后有许多项继承自Item,然后从Entity继承.现在,我按照所示定义了每个类
class Entity: public XMLs
{
public:
Entity() {}
virtual ~Entity() {};
//other functions
};
Run Code Online (Sandbox Code Playgroud)
这是给我带来麻烦的.每当我尝试在我的main函数中创建一个Item对象或任何类型的对象时,它会给我以下错误
/usr/include/c++/4.6/ostream:在构造函数'Entity :: Entity()'中:/usr/include/c++/4.6/ostream:363:7:错误:'std :: basic_ostream <_CharT,_Traits>: :basic_ostream()[with _CharT = char,_Traits = std :: char_traits]'受保护
这是什么意思?我关于构造函数和受保护的所有内容涉及到我公开的关键字保护.
在PHP中,private和protected方法之间似乎没有很大的差异.
我问为什么我应该protected在PHP Chatroom中使用并得到这个答案:
除非你有充分的理由不这样做:是的,
而且很好的理由是,如果你的代码是闭源库
,即便如此,它也可以用反射覆盖
所以 -
如果private方法可能被Reflection重写,那么方法中的重点是什么private?
为什么不允许从子类构造函数设置受保护的最终字段?
例:
class A {
protected final boolean b;
protected A() {
b = false;
}
}
class B extends A {
public B() {
super();
b = true;
}
}
Run Code Online (Sandbox Code Playgroud)
我认为在某些情况下会有意义,不是吗?
我正在学习继承的概念,特别是有关访问说明符的概念,在这里我对protected访问说明符感到困惑.受保护的成员可以通过基类成员函数和派生类成员函数访问.implementation如果我们声明protected作为访问说明符,则有可能搞乱基类.最好将数据成员声明private而不是保护,因为只有interface暴露而不是implementation部分.我们只声明一个类的私有部分中的变量以及它是如何变成的implementation?实施将在member functions右边进行吗?条款令人困惑,任何人都可以澄清并解释我的条款吗?