代码组织的一种重要方法是使用命名空间。
两个函数可能会发生命名冲突,把它们放到不同的命名空间中即可解决。
命名空间可以嵌套,这有助于组织大型代码库。
访问命名空间要通过作用域解析运算符::。
下面的例子展示了两个不同的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并返回最终的代码。
这个函数没有任何实参,只依赖各个家族相关命名空间中的信息。