Введение в файлы и пространства имен в C++
Крупную программу редко держат в одном файле.
Часть текста описывает, что есть в программе - классы,
функции, типы. Другая часть говорит, что выполнить -
создать объект, вызвать метод, вывести строку. В C++ первую
роль обычно играет заголовочный файл с расширением
.h, вторую - файл .cpp с телом функций
и точкой входа main.
Так проще читать код: интерфейс класса виден сразу в заголовке,
а длинные реализации не мешают обзору. Несколько файлов
.cpp подключают один и тот же .h и используют
одни и те же объявления.
Покажем идею на двух файлах: в user.h оставим только
объявление класса, а в user.cpp запишем методы
и функцию main:
#include <string>
class User {
public:
std::string name;
void show();
};
Файл user.cpp подключает заголовок кавычками
и содержит команды программы:
#include <iostream>
#include <string>
#include "user.h"
void User::show() {
std::cout << name << "\n";
}
int main() {
User user;
user.name = "ann";
user.show();
return 0;
}
Строка #include "user.h" вставляет текст заголовка
в место директивы. Компилятор видит полное объявление
User и проверяет вызовы методов. Сборку нескольких
.cpp разберем отдельно; здесь достаточно пары
user.h и user.cpp.