Я читал о статических функциях, и было сказано, что если функция статическая, вы можете использовать ее только в одном и том же файле.После тестирования я понял, что это неправда, потому что если вы включите файл со статической функцией, вы все равно сможете использовать эту функцию в другом файле.Затем я читаю разъяснение, что вы можете использовать статическую функцию только в одной и той же единице перевода.Хорошо, это имеет смысл, потому что это означает, что .cpp + включает, но даже если функция не является статичной, вы все равно не сможете использовать ее, если не включите файл.Так как вообще возможно получить доступ к функции из другого модуля перевода, не включая ничего, в чем смысл статических функций?
Main.cpp
#include "Staticf.h"
void main()
{
visible();
}
Staticf.h
#pragma once
#include <iostream>
using namespace std;
static void visible()
{
cout << "Static function is visible\n";
}
Компилируется нормально.Если я сделаю эту функцию нестатичной и удалю #include "Staticf.h", я не смогу использовать ее в любом случае.Так зачем нужны статические функции, если вы не можете получить доступ и к нестатическому?