Possible Duplicate:
C++: overriding public\private inheritance私人虚函数在派生类中
class base {
public:
virtual void doSomething() = 0;
};
class derived : public base {
private: // <-- Note this is private
virtual void doSomething()
{ cout << "Derived fn" << endl; }
};
现在,如果我做了以下内容:
base *b = new child;
b->doSomething(); // Calls the derived class function even though that is private
问:
- 它能够调用派生类的函数,即使它是私人的。这怎么可能?
现在,如果我改变继承访问说明符从公众保护/私有,我得到一个编译错误:
'type cast' : conversion from 'Derived *' to 'base *' exists, but is inaccessible
注:我知道的继承访问说明的概念。所以在第二种情况下,它是由private/protected派生的,因此无法访问。但我想知道第一个问题的答案。任何意见将不胜感激。
我想他想知道访问说明符为什么这样工作,而不知道错误的来源是什么。 – Hossein