Ваш код скомпилируется, но он выдаст ошибки связывания.
Создание исполняемого файла вашего проекта включает в себя два этапа:
Во время Компиляция компилятор просто переводит исходный код в объектный код, проверяя семантику языка.
Во время Связывание компоновщик фактически ищет определения символов и создает исполняемый файл из нескольких объектных файлов (созданных во время компиляции).
Компилятор компилирует исходный код в каждой единице перевода (файлы заголовков .cpp +) отдельно и, следовательно, предполагает, что определение должно присутствовать в каком-либо другом исходном файле.Это компоновщик, который пытается найти ссылки на определения функций, и, следовательно, пропущенное определение будет сообщено компоновщиком.
Обратите внимание, что компоновщик должен связывать только те символы, которые используются вашей программой,
Например: если ваша программа объявляет функцию, не дает определения и затем никогда использует / вызывает функцию где угодно, компоновщику не нужно встраивать код для перехода по адресу, где объектный код функции находится на любом сайте вызова функции.
При таком сценарии компоновщик простоникогда не нужно искать определение функции вообще.Следовательно код будет компилироваться и ссылаться.