#include <iostream.h> #include <stdio.h> class A{ private: int i; public: //int i; f(){ cout<<i<<endl; } }; class B:public A { }; class C:B{}; int main(){ C c; c.f(); }
看下面的代码
:
#include <iostream.h> #include <stdio.h> class A{ private: int i; public: //int i; f(){ cout<<i<<endl; } };
/****就在这里不一样****/ class B: A { }; class C:B{}; int main(){ C c; c.f(); }
注意黑体中的,说什么来着:
因为是B继承A是PUBLIC继承
所以无法访问f();
我晕。。有高手么。
Public继承子类和父类是is-a的关系
Private继承子类和父类是 is-implemented-in-terms-of(是根据……实现的)
结果:
Private继承是一种纯技术上的继承,父类中的所有函数都具有了Private属性,且interface没有了(多态也就不存在了),所以Private继承是消除虚函数的一种手段
Public则是不能访问父类的方法,只能访问自己重写/重载的方法。
有点搞不清楚你说的
你这写的是C++代码吧,你的帖子放错地方了。
这里是java区