轨道
/
C++
C++
/
练习
/
遗嘱
遗嘱

遗嘱

学习练习

简介

命名空间

代码组织的一种重要方法是使用命名空间。 两个函数可能会发生命名冲突,把它们放到不同的命名空间中即可解决。 命名空间可以嵌套,这有助于组织大型代码库。 访问命名空间要通过作用域解析运算符::。

下面的例子展示了两个不同的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++,全部免费。