<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                本書之前提到了“封裝”的概念,即指將一系列指令放在一個函數體內部的處理過程。而這樣的做法則是為了將函數的接口與它的實現分離(函數接口指如何使用這個函數,函數實現則指如何去實現這個函數及實現具體做了些什么)。 上面提到這種封裝可以命名為“功能封裝”,用以區分本章將要介紹的“數據封裝”。數據封裝是基于這樣的理念提出的:每一個結構的定義應當包括應用于本結構的函數集以及阻止對內部的無限制訪問。 數據封裝的應用之一在于隱藏用戶或程序員不必了解的那些實現層次的細節。 比如對于一張“撲克”的花色和點數可以有很多種表達方式,可以用兩個整數,兩個字符串或者兩個枚舉類型。而實現這個“撲克”類的作者需要知道如何實現它,使用這個“撲克”的其他人就不應該知道它的內部結構了。 另外一個例子,我們之前使用apstring和apvector對象卻未曾討論過他們的實現方式。實現方式可以有很多種,但作為使用這些庫的“客戶”則不必知曉。 在C++中確保數據封裝的通常辦法是通過禁止客戶程序訪問對象的變量來實現的。在結構定義時使用關鍵字private進行保護。比如,我們有如下的“撲克”定義。 ~~~ struct Card { private: int suit, rank; //suit為花色,rank牌大小 public: Card (); Card (int s, int r); int getRank () const { return rank; } int getSuit () const { return suit; } void setRank (int r) { rank = r; } void setSuit (int s) { suit = s; } }; ~~~ 該定義中分為兩個部分:私有部分和公共部分。函數是公共的,這就意味著他們可以被用戶程序調用。變量是私有的,于是他們就只能被“撲克”的成員函數進行讀寫。 但通過訪問函數(以get和set開頭的函數)可以實現用戶程序對私有變量的讀寫。從另一方面來看,通過訪問函數就可以很容易的控制哪個操作用戶可以實施于哪個變量上。比如,讓所有的牌在創建之后是只讀是一個好主意。為了實現這個目的,我們需要做的只需移除所有的set函數。 使用訪問函數的另外一個優點則是我們可以改變撲克的內部表達形式而不必更改用戶的程序。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看