• 关于多态代码和运行结果


    #include <iostream>
    #pragma hdrstop
    using std::cout;
    using std::endl;
    //---------------------------------------------------------------------------
    #pragma argsused
    //---------------------------------------------------------------------------
    class Base {
    public:
    	Base() { };
    	virtual void DisplayMessage() {
    		cout << "Displaying Message from an object of Base class" << endl;
    	};
    };
    //---------------------------------------------------------------------------
    class DerivedFirst : public Base {
    public:
    	DerivedFirst() { };
    	void DisplayMessage() {
    		cout << "Displaying Message from an object of DerivedFirst class" << endl;
    	}
    };
    //---------------------------------------------------------------------------
    class DerivedSecond : public Base {
    public:
    	DerivedSecond() { };
    	void DisplayMessage() {
    		cout << "Displaying Message from an object of DerivedSecond class" << endl;
    	}
    };
    //---------------------------------------------------------------------------
    class DerivedThird : public Base {
    public:
    	DerivedThird() { };
    };
    //---------------------------------------------------------------------------
    int main()
    {
    	// create a base class object
    	Base* bc = new Base();
    	bc->DisplayMessage();
    	// delete the base class object and assign it to DerivedFirst object
    	delete bc;
    	bc = new DerivedFirst();
    	bc->DisplayMessage();
    	// delete the base class object and assign it to DerivedSecond object
    	delete bc;
    	bc = new DerivedSecond();
    	bc->DisplayMessage();
    	// delete the base class object and assign it to DerivedThird object
    	delete bc;
    	bc = new DerivedThird();
    	bc->DisplayMessage();
    	delete bc;
    	return EXIT_SUCCESS;
    }
    //---------------------------------------------------------------------------
    

    函数主要作用:用基类声明的指针(Base* bc),指向派生类,如果派生类中有与基类中相同的方面就调用子类的方法,如果子类没有该方面,就调用基类自身的方法。
    基类中如果不加virtual 关键字,用用基类声明的指针,调用函数时只能调用基类自身的函数。

  • 相关阅读:
    Python yield 使用浅析
    python调试
    程序员常用的技术网站
    使用Pylint规范你的Python代码
    Python面试题整理-更新中
    2019-2020-1 1823《程序设计与数据结构》每周成绩
    2019-2020-1 1823《程序设计与数据结构》问题汇总(正在更新)
    2019-2020-1 1823《程序设计与数据结构》第二、三周作业总结
    2019-2020-1 1823《程序设计与数据结构》第一周作业总结
    2019-2020-1 1823《程序设计与数据结构》预备作业总结
  • 原文地址:https://www.cnblogs.com/zhangdongsheng/p/2010237.html
Copyright © 2020-2023  润新知