遺囑

遺囑

學習練習

簡介

命名空間

組織程式碼的一個重要方法是使用命名空間。兩個函式可能發生命名衝突,這時可以把它們放進不同的命名空間來解決。命名空間可以巢狀,這有助於組織龐大的程式碼庫。要存取命名空間,可以使用作用域解析運算子::。

下面這個範例展示了兩個不同的foo函式。只要加上各自的命名空間前綴,就能把它們放在一起使用。

namespace my_ns {
    int foo() {
        return 44;
    }
    namespace my_inner_ns {
        int baz() {
            return 90;
        }
    }
}
namespace my_other_ns {
    int foo() {
        return -2;
    }
}

int myresult{my_ns::foo() + my_other_ns::foo() * my_ns::my_inner_ns::baz()};

說明

你在一間專門處理特殊遺囑請求的知名律師事務所工作。

在這道練習中,你將要打開一座神祕的金庫。 你是這份遺產的執行人,必須集結三個家族長久以來保管的祕密代碼,才能取得一組帳號和一組對應的代碼。

為了防止任何一個家族獨自打開金庫,唯有結合他們各自的資訊,再加上你從遺囑中得知的祕密修飾值,才能打開金庫。

你有三個任務,全都是為了幫助這些家族打開金庫。

1. 坐在家族面前,攤開你的文件

定義一個名為estate_executor的命名空間。 接下來幾個任務的程式碼,都應該定義在estate_executor命名空間的主體中。

namespace some_name {
    // The space between the curly brackets
    // is called body of the  namespace.
}

2. 找出祕密的帳號

這是你大顯身手的時刻。 只有你握有能揭曉祕密帳號的祕密修飾值。

定義assemble_account_number(int secret_modifier)函式,它接受祕密修飾值作為引數,並以int回傳組合出來的帳號。

為了得到正確的號碼,你必須把三個家族各自的bank_number_part加總起來。

3. 最後一步:輸入祕密代碼

遺囑中的指示要求你先加總所有藍色片段,再加總所有紅色片段。 把這兩個總和相乘,就是最後得到的代碼。

定義assemble_code()函式,它會把三個家族的片段組合成一個integer,並回傳最後得到的代碼。 這個函式不接受任何引數,只依賴各家族相關命名空間裡的資訊。

透過 GitHub 編輯 連結會在新視窗或分頁中開啟
C++ Exercism

準備好開始 遺囑 了嗎?

註冊 Exercism,透過 19 個概念100 個練習 和真人引導來學習並精通 C++,全部免費。