• C++入门经典-例8.5-多重继承


    1:C++允许子类从多个父类继承公有的和受保护的成员,这称为多重继承。

    2:多重继承的定义。多重继承有多个基类名称标识符,其声明形式如下:

    class 派生类名标识符:[继承方式] 基类名标识符1,...,访问控制修饰符 基类名标识符n

    {

        [访问控制修饰符:]

        [成员声明列表]

    }

        声明形式中有“:”运算符,基类名标识符之间用“,”运算符分开。

    3:代码如下:

    // 8.5.cpp : 定义控制台应用程序的入口点。
    //
    
    #include "stdafx.h"
    #include <iostream>
    using namespace std;
    class CBird                                    //定义鸟类
    {
    public:
        void FlyInSky()                                //定义成员函数
        {
            cout << "鸟能够在天空飞翔"<< endl;            //输出信息
        }
        void Breath()                                //定义成员函数
        {
            cout << "鸟能够呼吸"<< endl;                //输出信息
        }
    };
    class CFish                                    //定义鱼类
    {
    public:
        void SwimInWater()                            //定义成员函数
        {
            cout << "鱼能够在水里游"<< endl;            //输出信息
        }
        void Breath()                                //定义成员函数
        {
            cout << "鱼能够呼吸"<< endl;                //输出信息
        }
    };
    class CWaterBird: public CBird, public CFish        //定义水鸟,从鸟和鱼类派生
    {
    public:
        void Action()                                //定义成员函数
        {
            cout << "水鸟既能飞又能游"<< endl;            //输出信息
        }
    };
    int main(int argc, char* argv[])                        //主函数
    {
        CWaterBird waterbird;                        //定义水鸟对象
        waterbird.FlyInSky();                        //调用从鸟类继承而来的FlyInSky成员函数
        waterbird.SwimInWater();                    //调用从鱼类继承而来的SwimInWater成员函数
        return 0;
    }
    View Code

    运行结果:

        在CBird类中提供了一个Breath成员函数,在CFish类中同样提供了一个Breath成员函数,如果CWaterBird类对象调用Breath成员函数,这时将会出现编译错误,因为编译器将产生歧义,不知道具体调用哪个类的Breath成员函数。为了使CWaterBird类对象能够访问Breath成员函数,需要在Breath成员函数前具体制定类名。例如:

    waterbird.CFish::Breath();

    waterbird.CBird::Breath();

  • 相关阅读:
    大数据学习之sqoop框架 25
    大数据学习之Flume框架 24
    大数据学习之Hive UDF及优化23
    大数据学习之HiveDDM数据操作语言22
    大数据学习之Hive数据仓库DDL数据定义语言21
    【MacOs】 SecureCRT设置linux终端显示颜色
    【MacOs】 VMware Fusion的NAT端口映射+静态IP
    【nginx】测试服务器配置内网项目转发
    【Linux】SSH连接linux时,长时间不操作就断开的解决方案
    【PHP】简易系统环境控制
  • 原文地址:https://www.cnblogs.com/lovemi93/p/7571264.html
Copyright © 2020-2023  润新知