1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關(guān)咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務(wù)時間:8:30-17:00
      你可能遇到了下面的問題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
      C++--C++對象模型分析、c++中的抽象類和接口

      一.C++對象模型分析

      A.class是一種特殊的struct
      1.在內(nèi)存中class依舊可以看作變量的合集
      2.在class域struct遵循相同的內(nèi)存對齊規(guī)則
      3.class中的成員函數(shù)與成員變量是分開存放的--每個對象有獨立的成員變量,所有對象共享類中的成員函數(shù)
      Q:class與struct的內(nèi)存占用情況?

      創(chuàng)新互聯(lián)建站專業(yè)為企業(yè)提供管城網(wǎng)站建設(shè)、管城做網(wǎng)站、管城網(wǎng)站設(shè)計、管城網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、管城企業(yè)網(wǎng)站模板建站服務(wù),十年管城做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。

      #include 
      #include 
      
      using namespace std;
      
      class A
      {
          int i;
          int j;
          char c;
          double d;
      public:
          void print()
          {
              cout << "i = " << i << ", "
                   << "j = " << j << ", "
                   << "c = " << c << ", "
                   << "d = " << d << endl;
          }
      };
      
      struct B
      {
          int i;
          int j;
          char c;
          double d;
      };
      
      int main()
      {
          A a;
      
          cout << "sizeof(A) = " << sizeof(A) << endl;    
          cout << "sizeof(a) = " << sizeof(a) << endl;
          cout << "sizeof(B) = " << sizeof(B) << endl;    
      
          return 0;
      }

      C++--C++對象模型分析、c++中的抽象類和接口
      運行時的對象退化為結(jié)構(gòu)體的形式
      1.所有成員變量在內(nèi)存中依次排布
      2.成員變量間可能存在內(nèi)存間隙
      3.可以通過內(nèi)存地址直接訪問成員變量
      4.訪問權(quán)限關(guān)鍵字運行時失效
      5.類的成員函數(shù)位于代碼段中
      6.調(diào)用成員函數(shù)時對象地址作為參數(shù)隱式傳遞
      7.成員函數(shù)通過對象地址訪問成員變量
      8.C++語法規(guī)則隱藏了對象地址的傳遞過程

      二,C++中的抽象類和接口

      A.面向?qū)ο蟮某橄蟾拍?/strong>
      在進行面向?qū)ο蠓治鰰r,會發(fā)現(xiàn)一些抽象的概念
      Q:圖形的面積如何計算?
      C++--C++對象模型分析、c++中的抽象類和接口
      我們知道,在現(xiàn)實中需要知道具體的圖形類型才能求面積,所以對概念上的“圖形”求面積是沒有意義的
      B.面對對象的抽象類
      1.可用于現(xiàn)實世界中的抽象概念
      2.是一種只能定義類型,而不能產(chǎn)生對象的類
      3.只能被繼承并重寫相關(guān)函數(shù)
      4.直接特征是相關(guān)函數(shù)沒有完整的實現(xiàn)
      因此,在程序中必須能夠反映抽象的圖形,程序中通過抽象類表示圖形的概念,抽象類不能創(chuàng)建對象,只能用于繼承,而在C++語言中沒有抽象類的概念,C++中通過純虛函數(shù)實現(xiàn)抽象類,純虛函數(shù)是指只定義原型的成員函數(shù),一個C++類中存在純虛函數(shù)就成為了抽象類。
      純虛函數(shù)的語法規(guī)則
      C++--C++對象模型分析、c++中的抽象類和接口
      代碼示例

      #include 
      #include 
      
      using namespace std;
      
      class Shape
      {
      public:
          virtual double area() = 0;//純虛函數(shù)的實現(xiàn)
      };
      
      class Rect : public Shape  //矩形面積的計算
      {
          int ma;
          int mb;
      public:
          Rect(int a, int b)
          {
              ma = a;
              mb = b;
          }
          double area()
          {
              return ma * mb;
          }
      };
      
      class Circle : public Shape //圓的面積計算
      {
          int mr;
      public:
          Circle(int r)
          {
              mr = r;
          }
          double area()
          {
              return 3.14 * mr * mr;
          }
      };
      
      void area(Shape* p)
      {
          double r = p->area();
      
          cout << "r = " << r << endl;
      }
      
      int main()
      {
          Rect rect(1, 2);
          Circle circle(10);
      
          area(&rect);
          area(&circle);
      
          return 0;
      }

      運行結(jié)果
      C++--C++對象模型分析、c++中的抽象類和接口
      從示例代碼以及運行結(jié)果可以看出,純虛函數(shù)實現(xiàn)了我們所需的效果,同時可以總結(jié)出:抽象類只能用作父類被繼承,子類必須實現(xiàn)純虛函數(shù)的具體功能,純虛函數(shù)被實現(xiàn)后稱為虛函數(shù),如果沒有子類沒有實現(xiàn)純虛函數(shù),則子類稱為抽象類
      B.接口的概念
      1.類中沒有定義任何的成員變量
      2.所有的成員函數(shù)都是公有的
      3.所有的成員函數(shù)都是純虛函數(shù)
      4.接口是一種特殊的抽象類
      代碼示例

      #include 
      #include 
      
      using namespace std;
      
      class Channel
      {
      public://定義的接口
          virtual bool open() = 0;
          virtual void close() = 0;
          virtual bool send(char* buf, int len) = 0;
          virtual int receive(char* buf, int len) = 0;
      };
      
      int main()
      {
          return 0;
      }
      

      小結(jié)
      1.抽象類由于描述現(xiàn)實世界中的抽象概念
      2.抽象類只能被繼承不能創(chuàng)建對象
      3.C++中沒有抽象類的概念
      4.C++中通過純虛函數(shù)實現(xiàn)抽象類
      5.類中只存在純虛函數(shù)的時成為接口
      6.接口是一種 特殊的抽象類


      當前題目:C++--C++對象模型分析、c++中的抽象類和接口
      路徑分享:http://www.ef60e0e.cn/article/ihcjss.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
        1. <ul id="0c1fb"></ul>

          <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
          <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

          枣强县| 卢湾区| 邮箱| 敦煌市| 天峻县| 永清县| 内黄县| 珲春市| 凯里市| 项城市| 固阳县| 阜新市| 遵义县| 云龙县| 正定县| 西贡区| 南华县| 赣榆县| 交口县| 临桂县| 洪雅县| 钟山县| 图们市| 会同县| 阜平县| 北宁市| 九龙县| 松溪县| 香格里拉县| 台安县| 鲜城| 青冈县| 钟山县| 商河县| 望奎县| 凤冈县| 十堰市| 资阳市| 五寨县| 梓潼县| 安徽省|