My personal suspicion in this area is that Satoshi was never (or not recently) a full-time programmer, but he was pretty familiar with computer science (maybe a student or academic?), and he'd read some comprehensive C++ book just before starting on Bitcoin, so he made full and correct usage of C++ features in a slightly messy way.
Agree with you. It seems that Satoshi's code was pretty sloppy. Moreover, obviously he was a Windows guy.
Readme.txt from Bitcoin 0.01 ALPHA:
Operating Systems
-----------------
Windows NT/2000/XP (and probably Vista)
Vista hasn't been tested yet. All the libraries used are cross-platform, so
there's nothing preventing future Linux and Mac builds.
Anyway, it doesn't matter if Satoshi Nakamoto was a full-time programmer or not. Although there were some bugs, the software worked fine.