(Possible Duplicate:C++:覆盖公共/私有继承)可能是重复的问题:
C++:覆盖公共/私有继承
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 derived;
b->doSomething(); // Calls the derived class function even though that is private
问题:
- 即使是私有的,它也可以调用派生类函数。这是怎么做到的?
现在如果我将继承访问限定符从public更改为protected/private,就会出现编译错误:
'type cast' : conversion from 'derived *' to 'base *' exists, but is inaccessible
注意:我了解继承访问说明符的概念。因此,在第二种情况下,由于它是派生的私有/受保护的,它是不可访问的。但我想知道第一个问题的答案。非常感谢您的任何帮助。