選擇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論成敗 以架構論英雄 閱讀(369) 評論(0)  編輯  收藏 所屬分類: Reading

          主站蜘蛛池模板: 南涧| 梁河县| 新源县| 石狮市| 厦门市| 容城县| 迁安市| 郸城县| 永清县| 日照市| 和硕县| 临洮县| 黔南| 永胜县| 碌曲县| 江华| 红河县| 鹤山市| 金寨县| 辉南县| 旬邑县| 孝昌县| 江山市| 托克逊县| 屏东市| 都江堰市| 邵东县| 任丘市| 大竹县| 沁源县| 金堂县| 磴口县| 新兴县| 民勤县| 崇礼县| 额济纳旗| 安远县| 营山县| 西畴县| 澄迈县| 任丘市|