• c++学习--继承与派生


                                    继承和派生

    1 含有对象成员(子对象)的派生类的构造函数,定义派生类对象成员时,构造函数的执行顺序如下:

      1 调用基类的构造函数,对基类数据成员初始化;

      2 调用对象成员的构造函数,对对象成员的数据成员初始化;

      3 执行派生类的构造函数体,对派生类数据成员初始化。

    代码如下:#include<iostream.h>

    class base{

       int x;

    public:

             base(int i)

             {

                       x=i;

                       cout<<"基类的构造函数"<<endl;

             }

             ~base()

             {

                       cout<<"基类的析构函数"<<endl;

             }

             void show()

             {

                       cout<<x<<endl;

             }

    };

    class derived:public base

    {

             base d;

    public:

             derived(int i):base(i),d(i)

             {

                       cout<<"派生类的构造函数"<<endl;

             }

             ~derived()

             {

                       cout<<"派生类的构造函数"<<endl;

             }

    };

    int main()

    {

             derived obj(5);

             obj.show();

             return 0;

    }

      撤销对象时,析构函数的调用顺序正好相反

    2 多个基类构造函数的执行顺序,则严格按照派生类声明来执行

    实验:构建一个类book,其中含有两个私有数据成员qu和price, 建立一个有5个元素的数组对象,将qu初始化为1~5,将price 初始化为qu的10倍。显示每个对象的qu*price。

    代码如下:

        1 #include<iostream.h>

    class book{

    private:

             int qu,price;

    public:

             book(int q,int p)

             {

            qu=q;

                       price=p;

             }

             void show()

             {

                       cout<<"qu*price="<<qu*price<<endl;

             }

    };

    int main()

    {

             book ob[5]={

                       book(1,10),book(2,20),book(3,30),book(4,40),book(5,50)

             };

        for(int i=0;i<5;i++)

                       ob[i].show();

             return 0;

    }

    2使用 C++ 的类建立一个简单的卖玩具的程序。类内必须具有玩具单价、售出数量以及每种玩具售出的总金额等数据,并为该类建立一些必要的函数,并在主程序中使用对象数组建立若干个带有单价和售出数量的对象,显示每种玩具售出的总金额。

    代码如下:

    #include<iostream.h>

    class toy{

    private: float price;

                        int count;

                        double sum;

    public: toy(float x,int y)

                       {

                                price=x;

                                count=y;

                       }

                       double Countsum()

                       {

                                sum=price*count;

                                return sum;

                       }

    };

    int main()

    {

             toy ob[5]={

             toy(12.3,10),toy(11.4,5),toy(17.8,19),toy(16.7,15),toy(3.5,10)

             };

             for(int i=0;i<5;i++)

                       cout<<"价格是:"<<ob[i].Countsum()<<endl;

             return 0;

    }

  • 相关阅读:
    LeetCode:Multiply Strings
    c/c++ 输入输出缓冲区
    Scala access modifiers and qualifiers in detail
    PUT vs POST in REST
    Redis优化总结
    硬中断和软中断(转)
    Redis监控技巧(转)
    Understanding mysql max_connect_errors
    TCP : two different sockets sharing a port?
    libevent 安装异常
  • 原文地址:https://www.cnblogs.com/GoodPMj/p/5239929.html
Copyright © 2020-2023  润新知