可能重複:
Why can i access a derived private member function via a base class pointer to a derived object?訪問從基類指針派生的私有成員函數派生類對象
#include <iostream>
using namespace std;
class B {
public:
virtual void fn1(void) {cout << "class B : fn one \n"; }
virtual void fn2(void) {cout << "class B : fn two \n"; }
};
class D: public B {
void fn1(void) {cout << "class D : fn one \n"; }
private:
void fn2(void) {cout << "class D : fn two \n"; }
};
int main(void)
{
B *p = new D;
p->fn1();
p->fn2();
}
爲什麼p->fn2()
調用派生類的功能,即使fn2
在D
私有?
C++中的第11.6節99。 D中的fn1默認是私有的,因爲沒有指定。 – ColWhi 2011-05-11 09:19:18
@Georg:垃圾問題標題如何幫助打破堆棧溢出的有趣例子。這個問題的標題很棒。 – 2011-05-11 09:20:39
@Sasquiha:C99 ?! – 2011-05-11 09:20:55