組織程式碼的一個重要方法是使用命名空間。兩個函式可能發生命名衝突,這時可以把它們放進不同的命名空間來解決。命名空間可以巢狀,這有助於組織龐大的程式碼庫。要存取命名空間,可以使用作用域解析運算子::。
下面這個範例展示了兩個不同的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()};
你在一間專門處理特殊遺囑請求的知名律師事務所工作。
在這道練習中,你將要打開一座神祕的金庫。 你是這份遺產的執行人,必須集結三個家族長久以來保管的祕密代碼,才能取得一組帳號和一組對應的代碼。
為了防止任何一個家族獨自打開金庫,唯有結合他們各自的資訊,再加上你從遺囑中得知的祕密修飾值,才能打開金庫。
你有三個任務,全都是為了幫助這些家族打開金庫。
定義一個名為estate_executor的命名空間。
接下來幾個任務的程式碼,都應該定義在estate_executor命名空間的主體中。
namespace some_name {
// The space between the curly brackets
// is called body of the namespace.
}
這是你大顯身手的時刻。 只有你握有能揭曉祕密帳號的祕密修飾值。
定義assemble_account_number(int secret_modifier)函式,它接受祕密修飾值作為引數,並以int回傳組合出來的帳號。
為了得到正確的號碼,你必須把三個家族各自的bank_number_part加總起來。
遺囑中的指示要求你先加總所有藍色片段,再加總所有紅色片段。 把這兩個總和相乘,就是最後得到的代碼。
定義assemble_code()函式,它會把三個家族的片段組合成一個integer,並回傳最後得到的代碼。
這個函式不接受任何引數,只依賴各家族相關命名空間裡的資訊。