daojin505 2009-04-14 18:09
浏览 250
已采纳

很有趣的问题,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();

 

我晕。。有高手么。

 

  • 写回答

4条回答 默认 最新

  • Candyut 2009-04-16 11:21
    关注

    Public继承子类和父类是is-a的关系

    Private继承子类和父类是 is-implemented-in-terms-of(是根据……实现的)

    结果:

    Private继承是一种纯技术上的继承,父类中的所有函数都具有了Private属性,且interface没有了(多态也就不存在了),所以Private继承是消除虚函数的一种手段

    Public则是不能访问父类的方法,只能访问自己重写/重载的方法。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?