В С++ таких моментов куча, в шаблонах, например. До тех пор, пока такой класс не затребован он игнорируется, насколько я помню, Страуструп об этой особенности упоминает где может.
С конструкторами как раз всё понятно. Любую функцию можно объявить и не реализовывать, при этом ошибки не возникнет, пока функцию не попытаются вызвать. Более того, когда не реализованную функцию попытаются вызвать, ошибка произойдёт лишь на этапе линковки, а компиляция пройдёт успешно. Так было в C и так же дело обстоит в C++.
C++ и дружба