選擇java 進入自由開放的國度

          隨筆 - 49, 文章 - 3, 評論 - 154, 引用 - 1
          數據加載中……

          C++中關于繼承的多態

          LibMat
          Book
          AudioBook

          Class:LibMat
          class LibMat  
          {
          public:
              LibMat();
              virtual 
          ~LibMat();
              virtual 
          void print() const;
          }
          ;
          // LibMat.cpp: implementation of the LibMat class.
          //
          //////////////////////////////////////////////////////////////////////

          #include 
          "LibMat.h"
          #include 
          <iostream>

          using namespace std;

          //////////////////////////////////////////////////////////////////////
          // Construction/Destruction
          //////////////////////////////////////////////////////////////////////

          LibMat::LibMat()
          {
           cout 
          << "LibMat::LibMat() constructor\n";
          }


          LibMat::
          ~LibMat()
          {
            cout 
          << "LibMat :: ~ LibMat() destructor\n";
          }


          void LibMat ::print() const 
          {
            cout 
          << "LibMat::print() -- I am a LibMat object!\n";
          }

          Class:Book
          #include "LibMat.h"
          #include 
          <string>
          using namespace std;

          class Book : public LibMat  
          {
          public:
              Book(
          const string &const string &);
              virtual 
          ~Book();
              virtual 
          void print() const;
              
          const string& title()  const{return _title;};
              
          const string& author() const{return _author;};
          protected:
              string _title;
              string _author;
          }
          ;
          #include "Book.h"
          #include 
          <iostream>
          using namespace std;
          //////////////////////////////////////////////////////////////////////
          // Construction/Destruction
          //////////////////////////////////////////////////////////////////////

          Book::Book(
          const string &title, const string &author)
          : _title(title), _author(author)
          {
            cout 
          << "Book::Book(" << _title << "" << _author << ") constructor\n";
          }


          Book::
          ~Book()
          {
           cout 
          << "Book:~Book destructor!\n";
          }


          void Book::print() const 
          {
            cout 
          << "Book ::print() -- I am a Book object!\n"
                 
          << "My Title is : " << _title << ", My author is : " << _author << endl;
          }
          測試代碼:main.cpp
          #include "AudioBook.h"
          #include 
          <iostream>
          using namespace std;


          void print(const LibMat&);

          void main ()
          {
            
          //LibMat libmat;
            
          //print(libmat);
            
            
          //polymorphism
            
          //Book b("The Castle", "Franz Kafka");
            
          //print(b);

            cout 
          <<"----------------------\n";
            AudioBook a(
          "The Castle""Franz kafka""Hanhongbo");
            print(a);
          }


          void print(const LibMat& mat)
          {
            cout 
          << "in global print():\n";

            mat.print();
          }

          posted on 2006-01-08 20:37 soochow_hhb 以java論成敗 以架構論英雄 閱讀(361) 評論(0)  編輯  收藏 所屬分類: Reading

          主站蜘蛛池模板: 大石桥市| 张家川| 东台市| 涞水县| 平阴县| 太康县| 周宁县| 平顺县| 高淳县| 肥乡县| 临城县| 灵台县| 绥阳县| 罗田县| 沂南县| 星子县| 永丰县| 健康| 砀山县| 娱乐| 广昌县| 嵩明县| 三门县| 宁陕县| 三都| 永修县| 巴东县| 屏山县| 东丰县| 英山县| 通许县| 阳东县| 长顺县| 息烽县| 谢通门县| 晴隆县| 英德市| 方城县| 通河县| 祁连县| 鄄城县|