幽魂国度

 

继承简介

    通过继承机制,可以利用已有的数据类型来定义新的数据类型。所定义的新的数据类型不仅拥有新定义的成员,而且还同时拥有旧的成员。我们称已存在的用来派生新类的类为基类,又称为父类。由已存在的类派生出的新类称为派生类,又称为子类。
    在C++语言中,一个派生类可以从一个基类派生,也可以从多个基类派生。从一个基类派生的继承称为单继承;从多个基类派生的继承称为多继承。
例:

#include <iostream.h>
class Metal
{
public:
 unsigned atomicNumber;
 float atomicWeight;
 float pricePerounce;
public:
 Metal( unsigned Number=0,
         float Weight=0.000000,
         float Perounce=0.000000)
 {
 atomicNumber=Number;
 atomicWeight=Weight;
 pricePerounce=Perounce;
 }
 ~Metal() {}
    unsigned GetNumber(void) {return atomicNumber;}  //内联函数
    float GetWeight(void) {return atomicWeight;}
    float Getprice(void) {return pricePerounce;}
 virtual void output()
 {
  cout << "The atomic weight =" << atomicWeight << endl;
  cout << "The atomic number =" << atomicNumber << endl;
  cout << "Price per ounce =" << pricePerounce << endl;
 }
};

class Pb : public Metal  //公有继承,单继承
{
public:
 Pb (unsigned Number=82,float Weight=207,float Perounce=0.01):Metal(Number,Weight,Perounce) {}
 //子类构造首先调用基类构造函数
};

class Au : public Metal
{
public:
 Au (unsigned Number=79,float Weight=196.9665,float Perounce=450.75):Metal(Number,Weight,Perounce) {}
 Au (Pb& lemp)  //拷贝函数
 {
       atomicNumber=lemp.GetNumber()-3;
       atomicWeight=lemp.GetWeight()-10.2335;
       pricePerounce=lemp.Getprice()+450.74;
 }
};

void main ()
{
    Pb m;
 Au n=m;     //拷贝
 n.output();
}

注:

  派生类的三种继承方式:公有继承(public)、私有继承(private)、保护继承(protected)是常用的三种继承方式:
        公有继承时,水平访问和垂直访问对基类中的公有成员不受限制;
        私有继承时,水平访问和垂直访问对基类中的公有成员也不能访问;
        保护继承时,对于垂直访问同于公有继承,对于水平访问同于私有继承。
        对于基类中的私有成员,只能被基类中的成员函数和友元函数所访问,不能被其他的函数访问。
        如果通过公有继承来产生基类,那么这个派生类应该是其基类的特化。
        如果派生类之间的区别在于属性,则用数据成员来表示;如果在于行为,则用虚函数来表示。

   任何一个类都可以派生出一个新类,派生类也可以再派生出新类。

 

posted on 2009-11-21 10:58 阅读(288) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理


导航

统计

常用链接

留言簿

随笔档案

搜索

最新评论

阅读排行榜

评论排行榜