Yes, classes can be used just the same as in C++. I've not had any problems. Depending on how you pass the data for each class that's allocated back and forth to DBP is entirely upto you.
I assume DBP will handle any clean up of the dll with or without an error so your destructors should work just the same too.
I've allocated memory for classes, passed pointers back and forth without problems.
EDIT: Also to note if you use these:
#define EXPORT __declspec(dllexport)
#define EXPORTC extern "C" __declspec(dllexport)
EXPORT will decorate your exported function with all the stuff on the end, whereas EXPORTC you don't have to worry about adding the extra info.
ie. EXPORT function (string table = IDS_STRING1 "blah blah @@QAEHXZ")
and EXPORTC function (string table = IDS_STRING1 "blah blah" without the extras)
Saves having to load up the dll to get the decorated names...
Mental arithmetic? Me? (That's for computers) I can't subtract a fart from a plate of beans!
Warning! May contain Nuts!