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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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;

}

 

以上是关于c++学习--继承与派生的主要内容,如果未能解决你的问题,请参考以下文章

C++的探索路13继承与派生之练习篇(需重新学习)

C++之继承与派生

C++学习摘要之三:继承和派生

C++学习19 类的多继承

C++学习之路派生类的构造函数

C++认知继承