Задать вопрос
Kokosso
@Kokosso
Начинающий программист

Что можно писать в заголовочных файлах С++?

Что можно написать в заголовочных фалах? Я знаю, что могу объявить там функцию, но могу ли я определить её там и вызывать от туда?
  • Вопрос задан
  • 422 просмотра
Подписаться 1 Оценить Комментировать
Решения вопроса 3
Функции нельзя определять в заголовочных файлах, кроме инлайн (в частности, методов класса) и шаблонных. Иначе рано или поздно произойдёт ошибка линковки.
Ответ написан
@Alexander1705
В заголовочных файлах должны быть объявления, в cpp-файлах - определения.
Код заголовочного файла вставляется в каждый cpp, который его включает. Поэтому, если вы напишите в заголовочном файле int N = 42; в каждом cpp создастся новая переменная, если же вы добавите только объявление extern int N, компилятор поймёт, что переменную нужно искать в другом месте
extern int N; // variable declaration
int N; // variable definition

// function declaration
float f(float x, float y);

// function definition
float f(float x, float y)
{
    return x + y;
}

// class declaration
class Foo
{
public:
    Foo();
    void bar();
private:
    static int baz;
}

// class member definition
Foo::Foo()
{
    // do some stuff
}

// class member definition
void Foo::bar()
{
    // do some stuff
}

// class member definition
int Foo::baz = 42;
Ответ написан
Rou1997
@Rou1997
Конечно, можете, но IDE может не отслеживать изменения ее определения, то есть придется вручную перестраивать проект, а потом запускать отладку.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы