• lazyneet@programming.dev
    link
    fedilink
    arrow-up
    1
    ·
    3 months ago

    I’ve been using C++ almost daily for the past 7 years and I haven’t found a use for shared_ptr, unique_ptr, etc. At what point does one stop being a noob?

    • MajorHavoc@programming.dev
      link
      fedilink
      arrow-up
      2
      ·
      3 months ago

      At what point does one stop being a noob?

      I recognize that trick question. For C++, the answer is always “soon”.

    • riodoro1@lemmy.world
      link
      fedilink
      arrow-up
      1
      ·
      3 months ago

      This guy probably still uses a char*.

      What have you been using it daily for? arduino development? I’m hoping no company still lives in pre C++17 middle ages.

    • AngryPancake@sh.itjust.works
      link
      fedilink
      arrow-up
      2
      arrow-down
      1
      ·
      3 months ago

      Given that you probably are using pointers, and occasionally you are allocating memory, smart pointers handle deallocation for you. And yes, you can do it yourself but it is prone to errors and maybe sometimes you forget a case and memory doesn’t get deallocated and suddenly there is a leak in the program.

      When you’re there, shared_ptr is used when you want to store the pointer in multiple locations, unique_ptr when you only want to have one instance of the pointer (you can move it around though).

      Smart pointers are really really nice, I do recommend getting used to them (and all other features from c++11 forward).

      • arendjr@programming.dev
        link
        fedilink
        arrow-up
        4
        ·
        3 months ago

        Smart pointers are really really nice, I do recommend getting used to them (and all other features from c++11 forward).

        You’re recommending him to give up his sanity and/or life?

        • porgamrer@programming.dev
          link
          fedilink
          arrow-up
          2
          ·
          3 months ago

          I would have said the same thing a few years ago, but after writing C++ professionally for a while I have to grudgingly admit that most of the new features are very useful for writing simpler code.

          A few are still infuriating though, and I still consider the language an abomination. It has too many awful legacy problems that can never be fixed.

    • whou@lemmy.ml
      link
      fedilink
      arrow-up
      1
      ·
      3 months ago

      well, if I have an object on the heap and I want a lot of things to use it at the same time, a shared_ptr is the first thing I reach for. If I have an object on the heap and I want to enforce that no one else but the current scope can use it, I always reach for a unique_ptr. Of course, I know you know all of this, you have used it almost daily for 7 years.

      In my vision, I could use a raw pointer, but I would have to worry about the lifetime of every object that uses it and make sure that it is safe. I would rather be safe that those bugs probably won’t happen, and focus my thinking time on fixing other bugs. Not to mention that when using raw pointers the code might get more confusing, when I rather explicitly specify what I want the object lifetime to be just by using a smart pointer.

      Of course, I don’t really care how you code your stuff, if you are comfortable in it. Though I am interested in your point of view in this. I don’t think I’ve come across many people that actually prefer using raw pointer on modern C++.