Menu
Coddy logo textTech

Заголовочные файлы и файлы исходного кода

Часть раздела Объектно-ориентированное программирование путешествия по C++ на Coddy — урок 3 из 104.

В C++ код разделяется на заголовочные файлы (.h) для объявлений и файлы исходного кода (.cpp) для реализаций.

Заголовочный файл со стражами включения (helpers.h)

#ifndef HELPERS_H
#define HELPERS_H

#include <string>

std::string greet(std::string name);
int addNumbers(int a, int b);

#endif

Исходный файл с реализациями (helpers.cpp)

#include "helpers.h"

std::string greet(std::string name) {
    return "Hello, " + name + "!";
}

int addNumbers(int a, int b) {
    return a + b;
}

Использование их в main

#include <iostream>
#include "helpers.h"

int main() {
    std::cout << greet("Alice") << std::endl;
    std::cout << addNumbers(5, 3) << std::endl;
    return 0;
}

Вывод:

Hello, Alice!
8

Стражи включения (#ifndef, #define, #endif) предотвращают многократное включение заголовочного файла. Файл .h объявляет то, что существует (прототипы), а файл .cpp определяет, как это работает (реализации).

challenge icon

Задание

Средне

Создайте три вспомогательные функции, разделенные между заголовочным файлом и файлом исходного кода:

  • helpers.h — Объявления функций с использованием header guards
  • helpers.cpp — Реализации функций

Функции, которые необходимо создать:

  • greet(name) — возвращает "Hello, <name>!"
  • ageInTenYears(age) — возвращает age + 10
  • checkAdult(name, age) — возвращает "<name> is an adult" если age >= 18, в противном случае "<name> is a minor"

Шпаргалка

Код на C++ организован в заголовочные файлы (.h) для объявлений и файлы исходного кода (.cpp) для реализаций.

Header guards (защита заголовков) предотвращают многократное включение:

#ifndef HELPERS_H
#define HELPERS_H
// объявления здесь
#endif

Заголовочный файл (helpers.h) содержит объявления функций:

#ifndef HELPERS_H
#define HELPERS_H

#include <string>

std::string greet(std::string name);
int addNumbers(int a, int b);

#endif

Файл исходного кода (helpers.cpp) содержит реализации:

#include "helpers.h"

std::string greet(std::string name) {
    return "Hello, " + name + "!";
}

int addNumbers(int a, int b) {
    return a + b;
}

Использование функций в main:

#include <iostream>
#include "helpers.h"

int main() {
    std::cout << greet("Alice") << std::endl;
    std::cout << addNumbers(5, 3) << std::endl;
    return 0;
}

Попробуйте сами

#include <iostream>
#include "helpers.h"

int main() {
    std::string name;
    int age;
    std::getline(std::cin, name);
    std::cin >> age;
    
    std::cout << greet(name) << std::endl;
    std::cout << "In 10 years you will be " << ageInTenYears(age) << std::endl;
    std::cout << checkAdult(name, age) << std::endl;
    return 0;
}
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Объектно-ориентированное программирование