zoukankan      html  css  js  c++  java
  • c++基础 之 面向对象特征一 : 继承

    class Base
    {
    public:
    void f()
    {
    cout<<"void f()"<<endl<<endl;
    }
    void f(int i)
    {
    cout<<"void f(int)"<<endl<<endl;
    }
    void h()
    {
    cout<<"void h()"<<endl<<endl;
    }
    void g(char s)
    {
    cout<<"void g(char)"<<endl<<endl;
    }
    protected:
    private:
    };


    class Devie1 : public Base
    {
    public:
    void h() // 重定义 覆盖父类的h()
    {
    cout<<"Devie1 void h()"<<endl<<endl;
    }

    protected:
    private:
    };


    class Devie2 : public Base
    {
    public:
    void f()// 重定义 覆盖了父类的所有重载函数 f() f(int a)
    {
    cout<<"Devie2 void f()"<<endl<<endl;
    }
    void g() // 隐藏 父类的 g(char s)
    {
    cout<<"Devie2 void g()"<<endl<<endl;
    }
    protected:
    private:

    };

    int _tmain(int argc, _TCHAR* argv[])
    {
    Base b;
    b.f();
    b.f(2);
    b.g('3');
    b.h();


    Devie1 d1;
    d1.f(1);//继承
    d1.f();//继承
    d1.g('1');//继承
    d1.h();//覆盖


    Devie2 d2;
    d2.f();//覆盖 
    //找不到Base::f(int) 被隐藏  覆盖父类的 f() 
    d2.g();//隐藏
    //找不到父类的Base::g(char s) 被隐藏
    d2.h();//继承
    //可以看出,若子类没有重定义父类的操作,子类会调用父类的函数。
    //如果子类重定义,分两种情况:
    //1.子类重定义父类的函数,返回值和参数列表一致,此为 覆盖  override
    //子类和基类一样可以发相同的消息,但是子类表现出不同于父类的行为。。。。
    //2.子类重定义了父类的成员函数,但是修改了返回值或者参数列表,此为隐藏 name hiding 
    //子类重定义父类的重载函数 时 将导致该函数的所有版本在子类中被自动隐藏。。。
    //d1.f()先在子类找f() 找不到再到父类找,如果在子类找到了就使用了。。。

    //替代原则:向上类型转换
    //在任何需要基类对象(指针)的地方,都可以用子类的对象(指针)来代替








    return 0;
    }

    //可以看出,若子类没有重定义父类的操作,子类会调用父类的函数。
    //如果子类重定义,分两种情况:
    //1.子类重定义父类的函数,返回值和参数列表一致,此为 覆盖  override
    //子类和基类一样可以发相同的消息,但是子类表现出不同于父类的行为。。。。
    //2.子类重定义了父类的成员函数,但是修改了返回值或者参数列表,此为隐藏 name hiding 
    //子类重定义父类的重载函数 时 将导致该函数的所有版本在子类中被自动隐藏。。。
    //d1.f()先在子类找f() 找不到再到父类找,如果在子类找到了就使用了。。。

    //替代原则:向上类型转换
    //在任何需要基类对象(指针)的地方,都可以用子类的对象(指针)来代替

  • 相关阅读:
    8组-Alpha冲刺-2/6
    8组-Alpha冲刺-1/6
    8组 需求分析报告
    结对编程作业
    8组 团队展示
    第一次个人编程作业
    第一次博客作业
    面向对象程序设计寒假作业3
    面向对象程序设计寒假作业2
    面向对象程序设计寒假作业1
  • 原文地址:https://www.cnblogs.com/pangblog/p/3327475.html
Copyright © 2011-2022 走看看