Most programmers want things virtual in C++, kinda like aiming against what Objective-C or Ruby or any dynamic language provides. The whole function lookup process makes it slower. While when you stay with the original C version, it just binds the function to the symbol compiled in the executable.
And sure I agree Globals are bad, but they are very usable, and if used you should only have it as some internal things for a set of functions.
I think we've strayed off-topic.