It seems like the moment you start really using constructors and destructors you have to subscribe to a bunch of other OO nonsense. At least, this is my own opinion
No, you have to subscribe to some C++ "nonsense" (also known as philosophy) It's not "OO" at all, in the same way that just because you use the "class" keyword to make an aggregate type doesn't mean you are using an OO paradigm in your code.
I hate that you can't take a pointer to constructors and destructors
For good reason, as this would allow you to break some fairly fundamental rules of the language.
Lastly C++ sucks when you define a constructor and yet want to create an array of your object on the stack and you get the error saying that's not possible without a trivial default constructor.
other than that, are there any "gotcha!"s to look out for?