After switching from C++ to C++ w/boost, do you think your OOD skills improved?
Do you notice patterns in ‘Normal’ C++ code that you wouldn’t consider that you’ve switched, or do you find that it enables a more abstract design?
I guess I’m really wondering if you just use it as a tool, or if you change your entire approach to OO design to make more efficient use of objects when using boost pointers.
Edit:summary
This question was kind of strange–I was asking because I’ve run into so much C++ code that was not at all OO. I’m fairly sure (with that and my work on it before moving to a managed language) that it’s harder to think in OO in C++ than a managed language.
From looking at these posts, I’m guessing that you learn the value of OO before finding a need for a better way to manage memory, so by the time you start looking for something like Boost, you’re already using OO methodologies pretty heavily.
I was kind of expecting a bunch of answers saying that it helped them think in OO, but now that I think about it, if you aren’t using OO, boost pointers are not very helpful, and you wouldn’t see the need for them (so you wouldn’t have replied).
In a project in C++ I was doing about six years ago, we implemented our own boost-like automatic pointer scheme. It worked pretty well, except for the various bugs in it. (Sure wish we had used boost…)
Nonetheless, it really didn’t change how we developed code. Object oriented design, with or without managed pointers, is very similar. There’s times when you need to return objects, or times when pointers to objects are more important. The nice thing about smart pointers has only a small amount to do with how you design your application. Instead of passing a potentially dangerous memory leak around, you can pass that same data and be fairly certain that it’s not going to leak.
In that respect, there are some things you can tend to do more with smart pointers: simplify your code. Instead of returning integers or basic structures every where, you can more freely pass complicated data structures or classes without worry. You can build more complex apps, faster, without having to worry so much. It lets you have the raw power of C and C++ when you need it (why would you be using C or C++ if you didn’t need it?) and have the ease of memory management that’s such an amazing productivity boost. If automatically managed memory wasn’t useful, it wouldn’t be in almost every other language on the planet!