Smart Pointers in C++ (Stop Using new?)

Поділитися
Вставка
  • Опубліковано 4 гру 2024

КОМЕНТАРІ • 41

  • @codebreakthrough
    @codebreakthrough  Рік тому +7

    I hope this was helpful! Here is the course link I mentioned in the video. New C/C++ course: calcur.tech/c-cpp-newsletter

    • @vinniciusrosa8284
      @vinniciusrosa8284 10 місяців тому

      I do not know yet how to pass unique_ptr as reference to a function.
      void whatever(...,std::unique_ptr &engine);
      - - -
      The call: whatever(engine).
      It should work, but do not compile.

  • @andreasguettinger6706
    @andreasguettinger6706 Рік тому +3

    As somebody who learned and uses mainly C++98, I'm glad to see videos about these newer C++ concepts I often forget about. 👍

  • @Nathan00at78Uuiu
    @Nathan00at78Uuiu Рік тому +5

    let's go. This is what we need. Been using your lessons for learning anything. So far been great. thanks.

  • @OlliS71
    @OlliS71 2 місяці тому

    shared_ptr is for sharing between threads, i.e. when handling shared data to another thread. Within a thread it's too slow because the control-block is atomically updated.

  • @billbez7465
    @billbez7465 10 місяців тому

    Very well done. There were other videos on smart pointers that left me a bit confused. Yours is clear & understandable. Thank you

    • @lilyscarlet2584
      @lilyscarlet2584 2 місяці тому

      handmade hero is a great series on youtube. it uses c++ to make a game from scratch and teaches how to properly manage memory etc. it starts with the windows platform layer and how to do cross platform proper.

  • @aminramazanifar9743
    @aminramazanifar9743 Рік тому +1

    As great as always. Cannot wait to see the course.
    Thanks!

  • @MichaelCohen-sb7tw
    @MichaelCohen-sb7tw 9 місяців тому

    Thanks Caleb. Very clear examples and explanations.

  • @sebastianroubert7543
    @sebastianroubert7543 13 днів тому

    You’re a beast. Been watching for interview prep. You should start an udemy course!

  • @xbiohazardx7312
    @xbiohazardx7312 Рік тому

    This video is very helpful, it's make me figured it out in one video huge thanks!

  • @Sluggernaut
    @Sluggernaut 7 місяців тому +2

    11:27 cracked up so hard. I do this all of the time when making videos.
    Edit: wth? How did that even compile at 13:12. You have to declare the data type when making a shared pointer. Weird.

    • @michaeldamolsen
      @michaeldamolsen 4 місяці тому

      "How did that even compile at 13:12. You have to declare the data type when making a shared pointer."
      - Since C++ 17 there are deduction guides which allow weak_ptr to take over the type from the shared_ptr and the other way around.

  • @suryadon947
    @suryadon947 10 місяців тому

    Best video for smart pointers
    Great bro🎉

  • @skauddy755
    @skauddy755 3 місяці тому

    Very clear explanation

  • @ArtVandelayInc
    @ArtVandelayInc Рік тому

    Great tutorial! Thank you

  • @dwivedys
    @dwivedys 6 місяців тому

    Hey good presentation Caleb!

  • @fpldaily5172
    @fpldaily5172 Рік тому

    hey bro. Please do a java springboot video or course?

  • @abhishekkhanchi9105
    @abhishekkhanchi9105 Рік тому +1

    Hi Caleb
    i ran shared pointer example.its giving error .
    error:smart_p3.cpp:6:34: error: conversion from ‘’ to non-scalar type ‘std::shared_ptr’ requested
    6 | std::shared_ptr a= std::make_shared;
    during compilation . which c++ compiler ur using..
    I tried this on g++: gcc version 9.4.0
    Please guide
    Thanks
    Abhishek

    • @codebreakthrough
      @codebreakthrough  Рік тому +3

      You have it should be (5)
      It looks like it thinks you are trying to use a function for the type because you put the () inside the

    • @abhishekkhanchi9105
      @abhishekkhanchi9105 Рік тому

      thanks alot caleb(@@codebreakthrough ) it work for me..

  • @midewestmond9442
    @midewestmond9442 Рік тому

    Why you using camel case btw and more can you make a video how to setup an editor for c++ development

  • @alirezaarttam3344
    @alirezaarttam3344 Рік тому

    Awsome. Thanks!

  • @赛尼木
    @赛尼木 10 місяців тому

    cystall clear!

  • @panjak323
    @panjak323 Рік тому +2

    The level of abstraction is on a really akward level.
    On one hand yeey nice, you don't have to delete pointers manually.
    On the other hand, if you need to do anything more advanced like cloning, deep and or shallow copy and storing in containers, that requires even more work, knowledge and frustration than managing raw memory directly.
    I find using smart pointers in very simple situations, where it's not necessary at all and in complicated situations I use raw pointers, just because I hate thinking about the obscure behavior of smart pointers.

    • @snesmocha
      @snesmocha Рік тому

      Isn’t that what smart pointers?

    • @KaiDevvy
      @KaiDevvy 11 місяців тому

      Smart pointers are a fairly thin wrapper in terms of added complexity. It's not a huge difference in understanding to use them as opposed to raw pointers, and the benefits of clearly defined ownership and automatic deallocation is monumental for the little abstraction.
      To me though, something that bothers me is just how verbose it is. Going from * to std::shared_ptr is a pain in the ass. Especially when you're making collections of smart pointers or the like

  • @nokia_n-gage
    @nokia_n-gage Рік тому

    Thanks!

  • @Brad_Script
    @Brad_Script 4 місяці тому

    what I find weird about this code is that you are allowed to return a unique_ptr from a function without using the move function. Is seems that the compiler is smart enough to realize you are moving the unique_ptr from the function to the caller of the function.

  • @古川範和
    @古川範和 Рік тому

    This is one of the best coding tutorial videos I've watched. Clear, concise and complete. Thank you so much for your great work!

  • @hiankun
    @hiankun 4 місяці тому

    Ownership, lifetime,... After learning some basic Rust, all of these make sense. 😀🦀

  • @NoSpeechForTheDumb
    @NoSpeechForTheDumb 3 місяці тому

    As a user, you shouldn't be using new/delete anymore. As a library developer, you need it to implement RAII.

  • @sent4dc
    @sent4dc Рік тому

    4:39 WRONG! 2 memory leaks.

  • @CCCole1
    @CCCole1 Рік тому

    P.S. Love the content

  • @riley-arr-g
    @riley-arr-g 3 дні тому

    More proof that cpp is a total mess... Your mistake at 11:35 quite hilarious.. And then weak pointers. Lol. Personally, I'll stick to remembering delete... 😂

  • @zohnannor
    @zohnannor Рік тому +4

    bro thinks hes mcoding💀💀

  • @y_x2
    @y_x2 2 місяці тому

    Absolutely ridiculous... simply put variable a outside main!

  • @hawks3109
    @hawks3109 Рік тому

    Don't use auto in production code, the rest is good, but auto can make bad assumptions when you start getting into nested data types and other techniques that come up in production code. auto is dangerous and could lead to bad assumptions by the compiler.