很有趣的问题,Public继承和默认的集成

#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区