C++ 封裝和泛化

2023-03-20 15:53 更新

一般情況下,封裝的意思是提取出一段代碼,包裝在一個函數(shù)里,這樣使你能夠在適合的地方使用此函數(shù)。我們已經看到過兩個封裝的示例:4.3小節(jié)的printParity函數(shù)和5.8小節(jié)的isSingleDigit。

泛化的意思是提取出特例的代碼(如打印2的倍數(shù)),修改它使之更通用(如打印任意整數(shù)的倍數(shù))。

下面的函數(shù)封裝了前一小節(jié)的循環(huán)代碼,并泛化為打印n的倍數(shù)。

void printMultiples (int n)
{
    int i = 1;
    while (i <= 6) {
        cout << n*i << " ";
        i = i + 1;
    }
    cout << endl;
}

封裝要做的就是添加第一行代碼,聲明了函數(shù)名、參數(shù)和返回值類型。泛化要做的就是用參數(shù)n取代原來的2。

如果我們調用此函數(shù)時,給參數(shù)賦值為2,我們的輸出就和之前一樣。如果參數(shù)值為3,則輸出為:

3 6 9 12 15 18

如果參數(shù)值為4,則輸出為:

4 8 12 16 20 24

現(xiàn)在你大概可以猜到我們將怎樣取打印乘法表:使用不同的參數(shù)值反復調用printMultiples。事實上我們將使用另一個循環(huán)來迭代打印各行。

int i = 1;
while (i <= 6) {
    printMultiples (i);
    i = i + 1;
}

首先要注意這個循環(huán)和printMultiples內部那個循環(huán)的相似之處。我所做的只是用一句函數(shù)調用取代打印語句。

這段程序的輸出如下:

1 2 3 4 5 6
2 4 6 8 10 12
3 6 9 12 15 18
4 8 12 16 20 24
5 10 15 20 25 30
6 12 18 24 30 36

這就是一個(有點粗糙的)乘法表。如果你受不了這種粗糙,就請將列之間空格替換為制表符,看看輸出什么。

以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號