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条)

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器