zoukankan      html  css  js  c++  java
  • 向一个参数为父对象的函数传递一个子对象会是什么结果?

    实验之前的想法:

    虽然传递的是子对象,但是在函数中只会使用子对象当中的父对象部分的函数和变量。

    实验如下:

    (1)首先定义一个Teacher类:

    class Teacher

    {

    private:

        string name;

        char sex;

    public:

        Teacher(string na, char s){

            name = na;

            sex = s;

        }

        void show(){

            cout<<"The teacher's name: "<<name<<". sex: "<<sex<<endl;

        }

    };

    (2)再定义一个ChineseTeacher子类:

    class ChineseTeacher:public Teacher

    {

    private:

        string discipline;

    public:

        ChineseTeacher(string na, char s, string dis):Teacher(na,s){

            discipline = dis;

        }

        void say(){

            cout<<"I am a ChineseTeacher"<<endl;

        }

        void show(){

            Teacher::show();

            cout<<"discipline: "<<discipline<<endl;

        }

    };

    (3)定义一个调用父类对象的函数:void Fun(Teacher *t);

    void Fun(Teacher *t)

    {

        t->show();

    }

    (4)主函数:

    int main()

    {

        Teacher t("mayun",'m');

        ChineseTeacher ct("mahuateng",'m',"Chinese");

        Fun(&t);

        Fun(&ct);

    }

    实验结果:

     

    第二行只输出了”mahuateng”和”m”,而没有输出” discipline: Chinese”。由此可见,当把ChineseTeacher类的对象ct传递给Fun()时,该函数只会调用ct的父对象部分。

    结论:实验结果与之前的猜想一致。

  • 相关阅读:
    select入门学习
    tomcat入门及相关学习
    Tomcat&Servlet
    CPU排行榜
    CPU后字母代表的含义
    刷 BIOS
    Java的三个体系
    XML入门及案例
    BootStrap笔记
    第三节 DOM及案例 表格全选、表单验证
  • 原文地址:https://www.cnblogs.com/ACPIE-liusiqi/p/10602659.html
Copyright © 2011-2022 走看看