Наверно зря я эту тему поднимаю, но мне лично гугленье сразу ответа не дало, пришлось думать самому. Вдруг кому пригодится? Сразу говорю, я решал задачу под линуксом, что надо сделать для компиляции под виндой не знаю.
Итак, что я понял из книги Дейтела и нескольких ссылок полученных от гугла.
Мы имеем три файла: собственно главный файл с функцией main(), файл с определением класса GradeBook - GradeBook.h и файл с реализацией функций класса GradeBook.cpp. Как я их только не пытался компилировать, ничего не выходило, пока не догадался посмотреть что там пишется у Дейтела после листинга программы. А там есть хорошая схемка которая показывает, что сначала создается объектный файл из GradeBook.cpp & GradeBook.h, это делается командой
$ g++ -c GradeBook.cpp
Так как GradeBook.cpp содержит
мы получаем нужный объектный файл.
Затем создается объектный файл из main.cpp & GradeBook.h
$ g++ -c main.cpp
Он тоже содержит
с интерфейсом класса и тоже получаем объектный файл.
Далее выполняем
$ g++ main.o GradeBook.o -o prog
и запускаем это
$ ./prog
Как я понимаю вся эта морока нужна для того, чтобы программист не отвлекался на реализацию функций класса(файл GradeBook.cpp после создания объектного файла вообще можно удалить), а имел перед глазами только интерфейс в файле GradeBook.h
Кстати додумался я не после картинки к сожалению, меня гугл прям носом ткнул в статью. Там в самом конце описывается создание Makefile, и все команды нужные там есть:
http://www.amse.ru/courses/cpp2/2010_10_11.html
P.S. За сумбур извините, литературный талант напрочь отсутствует.
P.P.S. Профи, если где жестко ошибся в рассуждениях пожалуйста, подскажите.