5 ms·
Modern C++: don't use f*cking pointers.
- davewicket 13y agoTrying to "post" a "link"?
- AllenWalker 13y agobroken link
- adamnemecek 13y agoGood thing that the author provided such an exhaustive list of arguments supporting his opinions. Oh wait. Between using pointers and the standard library, I think that I will stick with pointers.
- tqh 13y agoTo me at least build_new_object example seems horribly wrong: If you allocate the object on the stack and then returns it, it will go out of scope with the function, and the memory overwritten with next stack usage. Or does modern C++ do some magic nowadays?
- adamnemecek 13y agoI don't think that it even can do anything about that. It will just go out of scope and that's that.
- sixbrx 13y agoNo it will use a copy or move constructor to return the object by value, no problem there. Notice the value is being returned, not a pointer to the value.
- xyzzy123 13y agoRight, and on a good day you might get named return value optimization. http://msdn.microsoft.com/en-us/library/ms364057(v=vs.80).aspx http://msdn.microsoft.com/en-us/library/ms364057(v=vs.80).as... If the compiler can figure out what you're doing, the huge_object you declared can be aliased to an object in the caller's stack frame which results in no copies or moves at all.
- tqh 13y agoAh thanks for clearing that up. It's in a newer (C++03?) standard. I still have to deal with gcc 2.95 on a regular basis so I'm stuck in the old ways. I guess that is why the title was 'Modern C++'.
- deleted 13y ago[deleted]
- deleted 13y ago[deleted]
- xyzzy123 13y agoGenerally this is reasonable advice although I would not have stated it quite so emphatically. Most of the time when I type * in my own C++ code, what I mean is: "hey! this is an in/out parameter!".