99re热这里只有精品视频,7777色鬼xxxx欧美色妇,国产成人精品一区二三区在线观看,内射爽无广熟女亚洲,精品人妻av一区二区三区

C++ printCard函數(shù)

2023-03-20 16:23 更新

創(chuàng)建新類型時(shí),第一步一般是聲明實(shí)例變量并編寫(xiě)構(gòu)造函數(shù),第二步一般是編寫(xiě)一個(gè)可以將對(duì)象以可讀形式打印出來(lái)的函數(shù)。

對(duì)于紙牌的情況,“可讀”指的是我們必須將大小和花色的內(nèi)部表示映射為單詞。一種自然的方法是使用apstring的向量完成該功能。你可以像創(chuàng)建其他類型的向量一樣創(chuàng)建apstring的向量:

apvector<apstring> suits (4);

當(dāng)然,為了使用apvector和apstring類型,必須包含它們的頭文件【注】。

為了初始化向量的元素,我們可以使用一系列賦值語(yǔ)句:

suits[0] = "Clubs";
suits[1] = "Diamonds";
suits[2] = "Hearts";
suits[3] = "Spades";

這個(gè)向量的狀態(tài)圖如下所示: enter image description here

我們可以構(gòu)建一個(gè)類似的向量來(lái)解碼牌的大小。然后,我們就能以花色和大小為索引選擇適當(dāng)?shù)脑亓?。最后,我們能夠編?xiě)print函數(shù)來(lái)輸出調(diào)用該函數(shù)的紙牌的信息:

void Card::print () const
{
  apvector<apstring> suits (4);
  suits[0] = "Clubs";
  suits[1] = "Diamonds";
  suits[2] = "Hearts";
  suits[3] = "Spades";
  apvector<apstring> ranks (14);
  ranks[1] = "Ace";
  ranks[2] = "2";
  ranks[3] = "3";
  ranks[4] = "4";
  ranks[5] = "5";
  ranks[6] = "6";
  ranks[7] = "7";
  ranks[8] = "8";
  ranks[9] = "9";
  ranks[10] = "10";
  ranks[11] = "Jack";
  ranks[12] = "Queen";
  ranks[13] = "King";
  cout << ranks[rank] << " of " << suits[suit] << endl;
}

表達(dá)式suits[suit]的意義是“以當(dāng)前對(duì)象的實(shí)例變量suit為索引從向量suits選擇適當(dāng)?shù)淖址薄?/p>

因?yàn)閜rint是Card類的成員函數(shù),所以它能隱式地(即不適用點(diǎn)記法指定對(duì)象)引用當(dāng)前對(duì)象的實(shí)例變量。比如下面代碼:

Card card (1, 11);
card.print ();

其輸出是“Jack of Diamonds”。

你可能注意到了,我們沒(méi)有使用表示牌大小的向量的第0個(gè)元素。那是因?yàn)橹挥?-13之間的牌大小值才是有效的。通過(guò)在向量的開(kāi)頭留下一個(gè)未用元素,我們得到了從2映射到“2”,3映射到“3”等這樣的編碼。從用戶的觀點(diǎn)看,編碼是什么并不重要,因?yàn)樗械妮斎牒洼敵龆际怯每勺x的形式表示的。

另一方面,如果映射易于記憶,這對(duì)程序員來(lái)說(shuō)是有幫助的。

注:apvectors are a little different from apstrings in this regard. The file apvector.cpp contains a template that allows the compiler to create vectors of various kinds. The first time you use a vector of integers, the compiler generates code to support that kind of vector. If you use a vector of apstrings, the compiler generates different code to handle that kind of vector. As a result, it is usually sufficient to include the header file apvector.h; you do not have to compile apvector.cpp at all! Unfortunately, if you do, you are likely to get a long stream of error messages. I hope this footnote helps you avoid an unpleasant surprise, but the details in your development environment may differ.!

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)