在线二区人妖系列_国产亚洲欧美日韩在线一区_国产一级婬片视频免费看_精品少妇一区二区三区在线

鍍金池/ 教程/ C/ 數(shù)據(jù)封裝
動態(tài)內(nèi)存
類和對象
接口 (抽象類)
結(jié)構(gòu)體
循環(huán)的類型
函數(shù)
數(shù)字
日期和時間
基本語法
多態(tài)
數(shù)據(jù)抽象
注釋
命名空間
字符串
預(yù)處理器
決策語句
修飾符的類型
鍙橀噺綾誨瀷
基本輸入輸出
操作符
數(shù)組
模板
多線程
繼承
Web 編程
信號處理
指針
存儲類型
概述
引用
常量
異常處理
開發(fā)環(huán)境
重載
變量作用域
數(shù)據(jù)類型
數(shù)據(jù)封裝
文件和流

數(shù)據(jù)封裝

所有的 C++ 程序是由以下兩個基本要素組成:

  • 程序語句(代碼):這是程序執(zhí)行行為的一部分,他們被稱為函數(shù)。    
  • 程序數(shù)據(jù):數(shù)據(jù)是受程序函數(shù)影響的信息。

封裝是一個面向?qū)ο缶幊痰母拍?,它將?shù)據(jù)和操作數(shù)據(jù)的函數(shù)結(jié)合在一起,并使其免受外部干擾和誤用。數(shù)據(jù)封裝是數(shù)據(jù)隱藏的重要面向?qū)ο缶幊谈拍睢?/p>

數(shù)據(jù)封裝是一種將數(shù)據(jù)和使用數(shù)據(jù)的函數(shù)結(jié)合在一起的機制;數(shù)據(jù)抽象是一種只將接口公開并且向用戶隱藏實現(xiàn)細(xì)節(jié)的機制。

C++ 支持封裝的屬性和通過創(chuàng)建用戶定義類型實現(xiàn)的數(shù)據(jù)隱藏,這稱為類。我們已經(jīng)研究過,一個類可以包含私有、保護和公有成員。默認(rèn)情況下,所有定義在一個類中的成員是私有的。例如:

    class Box
    {
       public:
      double getVolume(void)
      {
     return length * breadth * height;
      }
       private:
      double length;  // Length of a box
      double breadth; // Breadth of a box
      double height;  // Height of a box
    };

變量 length 、breadth 和 height 都是私有的。這意味著只有 box 類的其他成員可以訪問它們,而程序的任何其它的部分不能訪問它們。這是一個封裝的實現(xiàn)方式?!   ?/p>

要想使類的某個部分成為共有的(即訪問您的程序的其他部分),你必須在 public 關(guān)鍵字后聲明它們。公有說明符后定義的所有變量或函數(shù)可以被程序中的其它函數(shù)訪問?!   ?/p>

使一個類成為其它類的友元類就可以獲得實現(xiàn)細(xì)節(jié),降低封裝。這個思想就是獲得盡可能多的每個類的對其它類隱藏的細(xì)節(jié)。

數(shù)據(jù)封裝的例子

任何一個實現(xiàn)有公有和私有成員的類的 C++ 程序都是一個數(shù)據(jù)封裝和數(shù)據(jù)抽象的例子??紤]下面的例子:

    #include <iostream>
    using namespace std;

    class Adder{
       public:
      // constructor
      Adder(int i = 0)
      {
    total = i;
      }
      // interface to outside world
      void addNum(int number)
      {
      total += number;
      }
      // interface to outside world
      int getTotal()
      {
      return total;
      };
       private:
      // hidden data from outside world
      int total;
    };
    int main( )
    {
       Adder a;

       a.addNum(10);
       a.addNum(20);
       a.addNum(30);

       cout << "Total " << a.getTotal() <<endl;
       return 0;
    }

編譯和執(zhí)行上面的代碼時,它產(chǎn)生以下結(jié)果:

    Total 60

上面的類實現(xiàn)了把數(shù)字加起來,并且返回總和。公有成員 addNumgetTotal 是對外的接口,用戶需要知道他們才能使用的類。私有成員 total 是用戶不需要知道的,但是它是為保證程序正常運行類所必要的。

設(shè)計策略

經(jīng)過一段痛苦的經(jīng)歷,我們大多數(shù)人已經(jīng)學(xué)會了使類成員在默認(rèn)情況下是私有的,除非我們真的需要使它們變成公有的。這就是一個好的的封裝?!   ?/p>

這個知識被頻繁的應(yīng)用于數(shù)據(jù)成員,它同樣適用于所有成員,包括虛函數(shù)。

上一篇:存儲類型下一篇:開發(fā)環(huán)境