it "builds" all the Books with the same default values, like:
long catalogNumber == 0
string bookName == ""
bool isLoaned == false
const int maxLoaningDays == 0
Well, first of all you can cut the leading underscores out - your compiler can deduct what is a member and what is an argument in your initialization list.
Next - Initializer lists are part of the implementation. Those don't belong into the class declaration.
Last: You actual problem is that you call the LibraryItem constructor inside of the constructor body - you need to call it in the initialization list. Preferably first.