在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

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

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

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

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

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

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

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

    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 類的其他成員可以訪問(wèn)它們,而程序的任何其它的部分不能訪問(wèn)它們。這是一個(gè)封裝的實(shí)現(xiàn)方式?!   ?/p>

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

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

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

任何一個(gè)實(shí)現(xiàn)有公有和私有成員的類的 C++ 程序都是一個(gè)數(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í)行上面的代碼時(shí),它產(chǎn)生以下結(jié)果:

    Total 60

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

設(shè)計(jì)策略

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

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