<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>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                上一章我們談到了從真實世界的值(如撲克牌中的大小和花色)到程序世界內部表示(如整數或字符串)的映射。雖然我們實現了牌面大小和整型數、花色和整型數之間的映射,但必須指出,映射本身并沒有成為程序的一部分。 實際上,C++提供了一種稱為“**枚舉類型**”的特性使以下兩點成為可能,一是將映射作為程序的一部分,一是定義了組成映射的值的集合。比如,牌的花色(Suit)和大小(Rank)可以以枚舉的形式定義: ~~~ enum Suit { CLUBS, DIAMONDS, HEARTS, SPADES }; enum Rank { ACE=1, TWO, THREE, FOUR, FIVE, SIX, SEVEN, EIGHT, NINE, TEN, JACK, QUEEN, KING }; ~~~ 默認情況下,枚舉類型中的第一個值映射為0,第二個映射為1,以此類推。如在Suit類型中,CLUBS(梅花)使用整型數0表示, DIAMONDS(方塊)使用1表示,等等。 Rank的定義中將ACE指定為1,覆蓋了默認的映射值。其他值以自然的方式遞推。 定義了這些類型之后,我們就可以在任何地方使用它們。比如,實例變量rank和suit可以分別用類型Rank和Suit來聲明: ~~~ struct Card { Rank rank; Suit suit; Card (Suit s, Rank r); }; ~~~ 構造函數的參數類型也相應改變了。現在,我們可以以枚舉類型的值為參數創建Card對象: ~~~ Card card (DIAMONDS, JACK); ~~~ 一般約定,枚舉類型中值的名字全部用大寫字母表示。上面代碼要比下面使用整型數的方式清晰地多: ~~~ Card card (1, 11); ~~~ 枚舉類型中的值是用整型數表示的,所以可用作向量的下標。因此原來的print函數不加修改即可工作。不過buildDeck還是要做些修改,如下: ~~~ int index = 0; for (Suit suit = CLUBS; suit <= SPADES; suit = Suit(suit+1)) { for (Rank rank = ACE; rank <= KING; rank = Rank(rank+1)) { deck[index].suit = suit; deck[index].rank = rank; index++; } } ~~~ 從某種程度上說,枚舉類型的使用會讓代碼的可讀性更好,不過同時也帶來了一點混亂。嚴格地講,不允許在枚舉類型上執行數學運算,如suit++是不合法的。 而另一方面,在表達式suit+1中,C++自動將枚舉類型轉換為整型數,然后我們可以將結果強制轉換為枚舉類型: ~~~ suit = Suit(suit+1); rank = Rank(rank+1); ~~~ 當然,還有一種更好的處理方法,那就是為枚舉類型重載++操作符,但這已經超出本書的范圍了。 [](http://www.ituring.com.cn/article/5353)
                  <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>

                              哎呀哎呀视频在线观看