Важливий метод організації коду - використання просторів імен.
Дві функції можуть мати конфлікт імен, який можна розвʼязати, розмістивши їх у різних просторах імен.
Простори імен можна вкладати один в одного, що допомагає структурувати великі кодові бази.
Доступ до просторів імен здійснюється через оператор дозволу області видимості ::.
У прикладі нижче показано використання двох різних функцій 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.
Функція не має аргументів і спирається лише на інформацію у відповідних просторах імен родин.
Зареєструйтеся на Exercism, щоб вивчати й опановувати C++, а також 19 концепцій100 вправ та справжнє наставництво від людей, і все це безкоштовно.