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() 找不到再到父类找,如果在子类找到了就使用了。。。

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

  • 相关阅读:
    TFS 2013”无法移除仍为团队管理员身份的标识”
    如何在TFS的过程模板中添加报表
    集成TFS Build生成与SonarQube获取代码分析结果
    TFS 2015 Update 2功能探索
    使用Azure Automation(自动化)定时关闭和启动虚拟机
    TFS 与活动目录AD(Active Directory)的同步机制
    Eclipse 常用快捷键
    JMeter网站并发性测试
    docker安装配置GitLab
    javaWeb项目在用maven启动时必须要用到的坐标
  • 原文地址:https://www.cnblogs.com/pangblog/p/3327475.html
Copyright © 2011-2022 走看看