Вообще тип данных, который пишется после оператора new может подразумевать собой любой фундаментальный тип данных или объект, определенный пользователем. A* ptr = new B
В данном случае B — это тип класса, который видимо наследуется от класса A
Можно конечно создать .inl файл. Они служат для реализации inline функций или функций с шаблонными параметрами.
Но лучше всё-таки прописывать реализацию в заголовочных файлах.