简介
命名空间
命名空间是组织代码的重要方式。两个函数可能发生命名冲突,把它们放入不同命名空间即可区分。命名空间也可以嵌套,有助于组织大型代码库。使用作用域解析运算符 :: 访问其中的名称。
下面的示例使用两个不同的 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 的命名空间。后续任务的代码都应写在这个命名空间内。
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() 函数,将三个家族的片段合并为一个整数密码并返回。函数不接收参数,仅依赖各家族相关命名空间中的信息。