CONST in C++

Поделиться
HTML-код
  • Опубликовано: 31 дек 2024

Комментарии • 565

  • @jean-naymar602
    @jean-naymar602 7 лет назад +1604

    For people having trouble remembering the order in which const keyword is to be used, here's a quick tip.
    You have to read it backward, like the compiler does. For instance :
    -const int * A; ==> "A is a pointer to an int that is constant."
    (or, depending on how you prefer to write it)
    int const* A; ==> "A is a pointer to a const int"
    but both are the same as explained in the video.
    -int * const A; ==> "A is a const pointer to an int."
    -const int* const A; ==> "A is a const pointer to an int that is constant".
    EDIT :
    As mentionned by simo simo in the comments bellow, const int * A does not mean that A actually points to a const variable. It just means that the compiler will not allow you to modify the pointed value *through* A.
    for instance :
    int val = 10;
    int const * a = &val;
    *a = 30; //this will NOT compile, you're not allowed to modify "val" through "a".
    val = 30; //this will compile.
    Same with :
    int val = 10;
    int val2 = 30;
    const int * const A = &val;
    A = &val2; //will NOT compile : you can't modify what A points to.
    *A = 30; //will NOT compile : you can't modify val through A
    val = 30; //this will compile, val is not constant

  • @KeybladeMasterCam
    @KeybladeMasterCam 4 года назад +254

    The C in C++ stands for Cherno. I'm convinced.

  • @inserteunnombreapropiado9079
    @inserteunnombreapropiado9079 4 года назад +99

    More simply: a _const_ is like a: "if I modify this, please give an error calling me an idiot because I modified a _const_ ".

    • @CourierSix01
      @CourierSix01 7 месяцев назад +2

      Const can be modified but in terms of constant there is no such a thing cuz it's literal...

  • @TheJorge100
    @TheJorge100 5 лет назад +5

    For anyone still struggling. A good way to read these statements is from right to left. Example: const int * (pointer to an int constant), int const * (pointer to a constant int), int * const (constant pointer to an int), const int* const (constant pointer to a constant integer)

  • @ehsan18t
    @ehsan18t 3 года назад +36

    Man! I never understand this const properly. I learned everything I could find in books, lectures and other c & c++ videos on RUclips. But this is the only video that solved all of my confusion on const.
    Thanks a lot man.

  • @cexplr2431
    @cexplr2431 5 лет назад +65

    "C++ man ... That's how it rolls.." HAAHAHAHAH

  • @basedworldsk8
    @basedworldsk8 5 лет назад +16

    I'm taking a upper division c++ class at uni with a really old professor who can't teach.... you're saving my life

  • @soniablanche5672
    @soniablanche5672 5 лет назад +185

    Every programming language ever:
    let's create a "constant" array
    ...
    then change the values inside it
    :^)

    • @thomascreel6522
      @thomascreel6522 3 года назад +13

      the size is constant

    • @cvbattum
      @cvbattum 3 года назад +8

      @@thomascreel6522 That's true for all arrays. As soon as you change the size, you reassign it with a different array, so it's no longer the same array with the old size. Now, of course, const prevents that and only that.

    • @thomascreel6522
      @thomascreel6522 3 года назад +6

      @@cvbattum No, the number of elements in the array is immutable and you must create a new array of a different size and move the old array elements into it.

    • @AlFredo-sx2yy
      @AlFredo-sx2yy 2 года назад +10

      @@thomascreel6522 uh... that's exaclty what the other guy said tho...

    • @knowsomething-b8d
      @knowsomething-b8d 2 года назад

      That’s why we have (tuples) in python.

  • @sroentoel
    @sroentoel 7 лет назад +145

    Bucky teaches the cpp fundamental level, you teach the advanced one. Brilliant guys on RUclips

    • @fburnrostro95
      @fburnrostro95 6 лет назад +9

      ah @thenewboston is indeed ol' reliable

    • @alexandergonzalez5975
      @alexandergonzalez5975 6 лет назад +2

      sroentoel
      Is Bucky coming back?

    • @rajesh09ful
      @rajesh09ful 6 лет назад +8

      I Second that, also feel Master Bo Qian need a mention here, most def

    • @rajesh09ful
      @rajesh09ful 6 лет назад +2

      I Second that, also feel Master Bo Qian need a mention here, most def

    • @MsJavaWolf
      @MsJavaWolf 4 года назад +2

      @@rajesh09ful Yes his videos are great. I think he stopped uploading sadly.

  • @nahuelarjona
    @nahuelarjona 5 лет назад +50

    Funny short story, demonstrating all acquired Cherno-skills:
    I went ahead and compiled the code showed on 2:53. I wanted to see *if I could force a change to the const MAX_AGE using the a pointer* .
    *The code:*
    _const int MAX_AGE = 90;_
    _int* a = new int;_
    _a = (int*)&MAX_AGE;_
    _*a = 85;_
    _std::cout

    • @thanostitan.infinity
      @thanostitan.infinity 4 года назад +3

      wow! that's amazing seriously! I had this doubt too, and was thinking and playing with it to understand it. So double wow and thanks haha.

    • @spyrex3988
      @spyrex3988 2 года назад +1

      its been 2 years but thats crazy

    • @swaw11
      @swaw11 Год назад

      Thanks! I did the same and was confused!

    • @BinGanzLieb
      @BinGanzLieb Год назад +1

      puh thats is crazy and error-prone for beginners.
      i have to keep that in mind, thank you

    • @vaishanthjv2519
      @vaishanthjv2519 2 месяца назад

      I did the exact same thing and I had the same result but I didn't check any assembly files. Instead I took max_age in through std::cin so that its value isn't known at compile time(actually I had to input a temp variable and then assign that value to max_age because you cant directly std::cin a const variable) and then ran the program and the output was 90 90.

  • @serkanozturk4217
    @serkanozturk4217 2 года назад +20

    Personal notes:
    - reading backwards helps understanding what is constant
    - making a class method constant says that that method will not change any of the class member
    - defining a function outside of the class and passing class instance as a constant reference makes sure that the instance won’t change. Thus, any method in that function must be const, otherwise you get error

  • @unstablethermalpaste3366
    @unstablethermalpaste3366 2 года назад

    You are the best one I found so far with a clear eng accent that is able to help me learn C++. No offense to other RUclipsrs with strong accents.

  • @4wen_main
    @4wen_main 11 месяцев назад

    These kind of details will take us countless hours to grasp from reading a book (with omission often), this is amazing.

  • @rayysw
    @rayysw 4 года назад +40

    "const is basically sort of like a promise that you give, in which you promised that something will be constant, that is it's not going to change. However, it's just a promise and you can bypass that whole 'promise', and you can break your promise just like you can in real life."
    I came here to learn more about C++ but I get legit life lesson instead...

  • @parth46767
    @parth46767 5 лет назад +65

    "Now let's put const everywhere"

  • @786balgoo
    @786balgoo 4 года назад +5

    You saved my life cherno... I love your tutorials and I would love it even more if you make 2d game tutorials in c++.

  • @LucidStew
    @LucidStew 7 лет назад +10

    Learned a few things, and this clarified my thinking on const greatly, so thank you, sir.

  • @AviPrakriti
    @AviPrakriti 5 лет назад

    These videos are addictive. I am coding for long time and know most of it, still watching this playlist is so refreshing. I feel like exploring every details of C++ all over again and play with it. Great job @TheCherno! Your Game Engine series is also another gem engine! Big thanks

  • @mikeorioles
    @mikeorioles Год назад

    The best video on the const keyword, and it's not even close. Good stuff!

  • @more_than_just_sentient
    @more_than_just_sentient 4 года назад

    Hey, I saw just two videos and clicked the sub button , your videos are really high quality and I left with a lot of answers than questions when I finish watching .
    Keep up the hard work . Cheers .

  • @robertmoats1890
    @robertmoats1890 Год назад

    "If you want both members to be pointers, you have to put the asterisk before every member" - this is why every programmer should immediately adopt my style of placing pointer asterisks on the name side instead of the type side! Then it works perfectly when you define multiple pointers on one line. Well, until you try to define a function that returns a pointer, then your asterisk doesn't know where it wants to be.
    "We still need to mark the method as const, but we just want to touch this variable" - a good example of when this pops up a lot is in "on demand" situations, such as load-on-demand, where an object loads its data in the background the first time it is required. In such a case, it is usually necessary to modify the object from a const situation, even though the method itself is not really the purpose of the modification, just the reason it is needed.

  • @mkhadka123
    @mkhadka123 Год назад

    you are a reason I fell in love with c++ language again, your c++ videos are simply awesome :)

  • @RoaiDude1
    @RoaiDude1 7 лет назад +8

    You are seriously the best code teacher I've seen and I bought something like fifty udemy courses.. keep the good work and combining assembly and c++ together! Its great and im learning alot even as a long time java programmer! Thank you a lot!!!

  • @pixarfilmz4769
    @pixarfilmz4769 7 лет назад +194

    This is how I see c++:
    const *int &int const ***const const *** &const

    • @MsJavaWolf
      @MsJavaWolf 6 лет назад +26

      We had something like that as questions in university, but every reasonable programmer avoids stuff like that.

    • @angelstojanov2346
      @angelstojanov2346 6 лет назад +10

      Same here, when I studied C I had a test with an expression full of illogical pointers

    • @bombrman1994
      @bombrman1994 6 лет назад +18

      schools teach and test programming using the worse method and discouraging students so much. In my C++ course i thought about droping the class so many times bcuz of my mark, on the other side i have good understanding on C++. It never makes sense bcuz schools care for mark and never for the diamond someone got in his brain

    • @haroldfinch360
      @haroldfinch360 6 лет назад +6

      If you have a good understanding of C++, how can your grades be bad then?

    • @bombrman1994
      @bombrman1994 6 лет назад +14

      Harold Finch because when my mother language is not English and the question in a test is a paragraph long asking to write a single line code. That’s when I start making mistakes. Programming instructors are not often found in every school

  • @piyushphodu
    @piyushphodu 4 года назад

    this video is the best const in C++ explanation till date i ever watched

  • @yacinemathurin2013
    @yacinemathurin2013 5 лет назад +7

    For people having trouble with the (const Entity& e), it's just that the function can't accept any instruction able to change the object (one of it's parameters) as you've set it const.

  • @Prashantkumar-pn6qq
    @Prashantkumar-pn6qq 4 года назад +5

    03:28 "Now let's start adding const everywhere" - Cherno be like - let the games begin baby😂

  • @furkanmacit4040
    @furkanmacit4040 5 лет назад

    i have been searching c++ videos in several platforms for two weeks i think i have finally found a good one

  • @handover007
    @handover007 4 года назад

    You are the best tutor on the planet .

  • @TheBellite
    @TheBellite 6 лет назад

    Gold! As a longtime hobbyist programmer who's new to C++, these videos are amazingly helpful.

  • @TW19567
    @TW19567 Год назад

    Absolutely the clearest explanation of const out there!

  • @alecmather
    @alecmather 2 года назад

    Literally amazing video, just answered all my questions about const (and more) in 12 minutes, you're a GANGSTER

  • @hpeterh
    @hpeterh 2 года назад

    Pretty clear, thank you.
    It should be noted, if a global variable is declared as "const" or a variable is declared "static const", then it is placed by the linker into a non writable CODE or CONST segment. When it is written to by some pointer trickery, an access violation exception will probably happen.

  • @rhyscabonita5933
    @rhyscabonita5933 5 лет назад +50

    As someone who's only approaching intermediate:
    Ahhhh.... Wait, holy. hell. what?!?.... Okay.. What.

  • @romanprykhodchenko1551
    @romanprykhodchenko1551 4 года назад +1

    You are the best!!! Really structured and easy to understand lessons!)
    Very useful for any kind of the projects)
    Thanks bro!

  • @KishanKumar-mz3xr
    @KishanKumar-mz3xr 4 года назад +3

    Easy to remember like this:
    * const -> pointer(*) is constant(const)
    const * -> constant(const) value at pointer(*)

  • @xwaresharex
    @xwaresharex 5 лет назад

    You really did make me understand what const's are and how do they work, have been trying to find answer to it from so many websites and videos I can't believe I now understood it all. Really thank you so much!!

  • @calecacciatore5422
    @calecacciatore5422 6 лет назад +3

    dont forget that const makes a variable local to the file. that is, only visible in the actual translation unit.
    you can have 2 const variables with the same name in different files and it will compile fine.
    so basically they re implicitly static.

  • @gorilla543210
    @gorilla543210 5 лет назад +18

    /* my note of CONST
    Use for 3 cases */
    1. const int* a => can't modify the value store in a (address)
    2. int* const a => can't modify the address which a points to
    3.use in member function which promise not to modify the data member of the class => add const to all member functions which don't modify data members , since it might be const reference! p.s. add "mutable" if you want to break the promise
    wrap up
    const int* const Getter() consr {}

    • @siAppDesign
      @siAppDesign 4 года назад +1

      Nice summary Thank you

  • @daniil9263
    @daniil9263 2 года назад

    since people are still watching/commenting. A great example why const on member functions should be used.
    map[ ] operator (as in dict["key"] = value. it's sometimes (depending on the implementation of map) not const. So this dict["kye"] = value would compile and work, until it doesn't because you just inserted >value< at "kye".
    If you don't know the framework in&out, be const correct. This particular thing was taken from the yt-video: c++ bugs at facebook.

  • @ashiinsane90
    @ashiinsane90 7 лет назад

    bro your channel is a gold mine i just started learning C++ also new to programming but your vids help alot. would love to see u do games like asteroids and snake etc with C++

  • @reflectiveradiosity6664
    @reflectiveradiosity6664 5 лет назад

    Was really confused and this made it a whole bunch clearer, again your videos are straight to the point, and relatively easy to follow! Thanks!

  • @Garbaz
    @Garbaz 5 лет назад +1

    0:16 Why doesn't the compiler use the fact that a variable is const for optimization?
    This would only work if it weren't a promise of course.
    An example that could be optimized:
    const int SCALAR = 90;
    int x = 2 * SCALAR * y;
    If the compiler knows that SCALAR is constant, it could calculate `2 * SCALAR` at compile time and would only have to do one multiplication at runtime.
    Or does it do that already, just by being clever and recognizing constant variables even without the const keyword?

  • @qidex
    @qidex Год назад

    I've been programming for years, but these details are things I largely didn't know. Now I hope I can improve my coding patterns accordingly, but still need to figure if I'm understanding everything correctly.

  • @0x_Anakin
    @0x_Anakin 5 лет назад

    You have the best c++ tutorials in youtube dude

  • @shvideo1
    @shvideo1 3 года назад

    Comprehensive and to the point. A great tutorial. Crystal clear. Thanks a lot for your effort.

  • @manonthedollar
    @manonthedollar 4 года назад

    Thank you for all your videos! I just finished working through a C++ book, and I'm at the point where I try to make my first "thing," and I go "uh oh I still don't know anything." These videos are excellent for solidifying my understanding of things that I remember reading about, but do not yet have an instinct to know if I'm using them correctly yet in my own work.

  • @dhu1090
    @dhu1090 3 года назад

    You are so knowledgeable!! I don't know how I'd learn C++ without you!! 🙏🏻

  • @GfastGao
    @GfastGao 6 лет назад +1

    Man, I start to think if I really should pledge through patreon to this series, because you are the correct one for me. INDEED.

  • @can3792
    @can3792 2 года назад

    i am on the patreon and donated . i cant thank you enough. please carry on taking video in c++ :)😀 keep up the good work

  • @tyroneslothdrop9155
    @tyroneslothdrop9155 6 лет назад

    Thank you for using a dark theme with your coding examples. It makes a massive difference.

  • @aubreymatende6497
    @aubreymatende6497 4 года назад

    im loving these videos, i am asking if you can make a video on friend functions

  • @Weredah
    @Weredah 7 лет назад +2

    Thank you so much for clearing up const's I really appreciate this series :D

  • @10bokaj
    @10bokaj 7 лет назад +5

    dud, your knowledge exceeds the physical barrier of the realm

  • @zuhail339
    @zuhail339 5 лет назад +2

    I really like how he does sarcasm in the middle of a serious lesson ! But I guess that's how it rolls😂

  • @Ginger_Hrn
    @Ginger_Hrn 8 месяцев назад +1

    Hello for my future self, I know I'll be watching this many times in the future

  • @TheMR-777
    @TheMR-777 4 года назад +1

    Hey man, I've never seen these in-depth concepts before in my University! Many thanks for this!

  • @celestialmaat9462
    @celestialmaat9462 2 года назад

    I spent like 20 minutes and then looked you up🤯🤯🤯! Thanks

  • @karmaindustrie
    @karmaindustrie 6 лет назад +446

    const bool confusion = true;

    • @kushnayak1619
      @kushnayak1619 4 года назад +52

      ok

    • @karmaindustrie
      @karmaindustrie 4 года назад +17

      @@kushnayak1619 I want to know the mindset that led you to write "ok" and I also want to know the mindset that led somebody to give you a like after at most 8 hours. Because I want to benefit from the law of attraction fully.

    • @kushnayak1619
      @kushnayak1619 4 года назад +65

      @@karmaindustrie ok

    • @karmaindustrie
      @karmaindustrie 4 года назад +2

      @@kushnayak1619 So I guess the answer is: You don't really want to benefit from the law of attraction. What a pity. I want to inform you that I am very cool.

    • @karmaindustrie
      @karmaindustrie 4 года назад +3

      @@kushnayak1619 And also, to all the other people: It looks like you are liking your own comments because you got one like again after 23 minutes. This feels like a psychological disease to me, right now :) - Correct me if I'm wrong. Plausible. Try.

  • @SahilKumar-ni7su
    @SahilKumar-ni7su 4 года назад

    new subscriber from india amazing teaching technique bro keep it up

  • @rcookie5128
    @rcookie5128 7 лет назад +6

    daym, so much to take care of when working with const stuff..

    • @ericrussell5304
      @ericrussell5304 7 лет назад +11

      In some ways the opposite is true. If you get const right in your program, you'll have to worry less about what you do with your objects. Without const it would be like having a bunch of global variables that might get changed without warning. With const, I can give you an const object and not worry about you changing it...like a map's key.

  • @HappyMatt12345
    @HappyMatt12345 Год назад

    So if I understand it right, writing const before a pointer means the data at that pointer is cannot be modified, after a pointer means the pointer itself is constant but the data at that memory address can be rewritten, and both before and after makes that pointer completely read-only, you cannot redefine the pointer itself nor write to the data at the memory address it points to, that's pretty useful to know.
    As an experiment I wrote a # define (had to put a space between # and define to keep RUclips from treating it as a hashtag) to see if I have a solid understanding of it, if anyone is curious here's what I wrote: # define readonlyptr(T) const T* const

  • @372leonard
    @372leonard 7 лет назад +39

    are you ever gonna do function pointers?

    • @Steven-tw7iz
      @Steven-tw7iz 7 лет назад +7

      Paul Leonard Boon I definitely think he should. That would be an awesome topic

    • @Hopsonn
      @Hopsonn 7 лет назад +6

      I hope not, that is more a C thing.
      In C++, "std::function" should be used

    • @brod515
      @brod515 7 лет назад +30

      Why are you Guys on this playlist

  • @kartikxramesh
    @kartikxramesh 4 года назад +17

    This was such a good video!!! Multiple *holy shit* moments for me throughout the video. This is better than Breaking Bad ngl.

  • @theOmKumar
    @theOmKumar 2 года назад +1

    ***EASY MENTAL MODEL TO PERMANENTLY REMEMBER THESE***
    think of '*' as boundary, whatever is in contact with const is meant to be constant
    eg1: int const *ptr -> int const |*| ptr
    eg2: const int *ptr -> const int |*| ptr
    -> const is in contact with int only, and ptr is separated thanks to boundry '*', this means:
    1. we can't modify int values
    2. we can modify pointer
    eg3: int * const ptr; -> int |*| const ptr
    -> const is in contact with ptr while int is separated, this means:
    1. we can't modify pointer.
    2. we can modify int values.
    Also You can read backwards as suggested by @Jean-Nay Mar

  • @vitaliipaprotskyi3815
    @vitaliipaprotskyi3815 5 лет назад

    const applies to the thing left of it. If there is nothing on the left then it applies to the thing right of it.
    Object * const obj; // read right-to-left: const pointer to Object
    Object const * obj; // read right-to-left: pointer to const Object
    Object const * const obj; // read right-to-left: const pointer to const Object

  • @ezequielzion
    @ezequielzion 4 года назад

    te amo cherno acá te estamos viendo con un amigo muchas gracias!!!!

  • @Hetp111
    @Hetp111 6 лет назад +1

    Thanks! The level of depth you go in is amazing!

  • @filiperei6055
    @filiperei6055 4 года назад

    Question: How come we can change a const char* value? And don't even have to de-refference it?
    const char* example = "Some text.";
    example = "Some different text."; //didn't have to type * before example, and it allows us to change the value despite being an array of const chars?
    Thanks for all your videos! You're the best teacher I've come across on these subjects!

  • @mytech6779
    @mytech6779 7 лет назад

    Thinking way back to my short time with C. Constant was a term used when using the preprocessor directive #define to name literal values. The purpose was similar to why you might use a named function rather than writeing inline statements(only need to write it or change it in one place), the question is why not simply assign the value to a variable name. The given reason was that it helped produce faster running and more compact machine code because the compiler must consider that variables are potentially ... variable and mutable at run time while constant literals don't change at run time and can be more easily handled by the compiler in the optimizing stage. Of course that book was from 1993, compiler optimizers have improved enough since that they can likely take up the slack if the programmer takes the easy route like declaring a variable when a constant literal value is the intent. And that was C89 not C++14

  • @nedboulter9187
    @nedboulter9187 7 лет назад

    Really nice tutorial, I already know C++ and I just ran across this, but it still cleared a couple of things up, in terms of the mutable keyword at whatnot. I will probably keep watching these in case there is anything else I missed :) :)!!

  • @sangdilbiswal30
    @sangdilbiswal30 2 года назад

    this is a complete video I was looking for thanks sir.

  • @jimmylander2089
    @jimmylander2089 5 лет назад

    I keep coming back to this video because I always forget what const means depending on its position and it's so ANNOYIIIIIINNNNGGGG

  • @muneebj.4010
    @muneebj.4010 3 года назад

    if you are planning to work with classes, assigning objects to one another and "return" object types then the CONST keyword is one of the few things you must know.
    Some places where you NEED to use const
    copy constructor,
    code: {className(const className &object); }
    assignment =("is equal to" symbol) overloaded operator,
    code: {void operator=(const className &object); }

  • @Impulse_Photography
    @Impulse_Photography 4 года назад

    You should make some videos on specific Design Patterns, in particular (for me) the Strategy Pattern in C++. Maybe, recommend some books for learning the main Design Patterns every programmer should know ...

  • @udayyadav3489
    @udayyadav3489 5 лет назад

    who the hell are these 14 people to dislike such an amazing video...........

  • @eyalpery8470
    @eyalpery8470 4 года назад

    Thanks!
    Refactored my whole program at work

  • @mohamadelmahdihoumani4239
    @mohamadelmahdihoumani4239 4 года назад

    Can you make the video on how you type this fast in VS?
    Amazing content btw !

  • @jingfenghong2312
    @jingfenghong2312 7 лет назад +1

    Thank you. Could you also introduce a little bit more about return constant, return reference and return constant with reference? I'm confused about these three things.

  • @YektaSarioglu
    @YektaSarioglu 5 лет назад

    Simple and clear explanation. Keep up the good work, friend 👍

  • @sachinnair8375
    @sachinnair8375 5 лет назад

    Thanks man ..... your tutorials are very clear to follow.✌️

  • @ameerhamza8300
    @ameerhamza8300 4 года назад

    in a function, when should we pass as pointer and when should we pass as reference?
    For example the PrintEntity function could have argument (Entity *e) or (Entity &e) what should be used when

  • @Nathan-nd7py
    @Nathan-nd7py 6 лет назад

    At 10:46 in the video you show that sometimes we have two versions of the same function, one marked const and one not, so obviously the non-member function can call the const version, but my question is, what on earth is the purpose of the nonconst version? When would you ever need to call an identical function not marked const?

  • @Popart-xh2fd
    @Popart-xh2fd 2 года назад

    9:50 I'm confuse, if by using a reference I can't change the contents of the class variables then what about the talk of using references instead of pointers to change variable contents? Object references can't call any function of the respective class whenever a variable of that class is changed by that function, is that it?

  • @MoolsDogTwoOfficial
    @MoolsDogTwoOfficial Год назад +1

    Note for people using C++20 or greater: There is also 'constexpr' for explicit compile time constants.

    • @virno69420
      @virno69420 11 месяцев назад

      🤓Ermm don't forget about consteval!

  • @IshakHeor
    @IshakHeor 4 года назад

    One of the best teachers ever!!!

  • @petrkassadinovich2705
    @petrkassadinovich2705 6 лет назад +1

    Thank you Yan for your tutorials!
    PS: now I can understand: const int* const Method(const int& const p1) const;

    • @SimonK91
      @SimonK91 3 года назад

      Only problem is that references are already "hard pointers", so "const int& *_const_* p1" doesn't work
      (2+ years old comment, and 4+ year old video, though for some reason I ended up here)

  • @AdityaKumar-xw2yx
    @AdityaKumar-xw2yx 5 лет назад

    Dude you are great!! you have really make the things very simple!!

  • @DonceA
    @DonceA 4 года назад +4

    Here are 3 styles to create a pointer:
    1) int* p1;
    2) int *p2;
    3) int * p3;
    Cherno uses first style, but I prefer third style and this video shows why I prefer it.
    4) int* p1, p2;
    p1 will be pointer, but p2 will be just normal int variable. So it makes more sense to write it like this
    5) int *p1, *p2;
    Now it looks more uniform. You say you will use int data, but at the same time you say that variables are pointers and don't store int value. But if you want to make pointer constant you need to write const keyword after asterisk.
    6) int * const p1 = &var1, * const p2 = &var2;
    So if I use third style asterisk place are uniform for all variables, but first and second styles move asterisk around depending if you will declare multiple variables at same line and if you want to make pointer constant.
    7) int const * const p1 = &var1;

  • @sri95
    @sri95 2 года назад

    Thanks for clearly explaining ~10 contradicting concepts in 10 min ...

  • @XpressCrosSs
    @XpressCrosSs 4 года назад

    it is often optimized into an immediate operand in instructions and stored in text segment

  • @NefKamerzon
    @NefKamerzon 4 года назад +2

    "Haha, point out"
    That was comedy gold

  • @informativecontent4778
    @informativecontent4778 6 лет назад

    man o man you are awesome and most the programming i learnt is beacuse of you and buckey

  • @danielketcheson1965
    @danielketcheson1965 2 года назад +1

    Before video:🙄🤕
    During video:🤔🤯🥰
    After video:🧐

  • @ellisha4185
    @ellisha4185 2 года назад

    When you talk about putting the const before and after the pointer, are you talking about top/low level const?

  • @hts2370
    @hts2370 3 года назад

    very clear explanation

  • @drwisdom1
    @drwisdom1 5 лет назад

    I never knew about the const after member function usage. It is interesting, but not of much use.
    In the early days of c they didn't have prototypes (it was taken from C++), so if you got one argument wrong or the wrong number of args it would compile but crash at run-time. Prototypes moved the issue of wrong args from run-time to compile time, making the programmer's life a lot easier. The purpose of const is similar. It prevents you from mixing up your arguments. Additionally, it prevents you from modifying the wrong data. Const is a tool that helps the compiler point out where you made programming mistakes, preventing them from appearing at run-time. You should use const in all applicable situations. You could also use const to create different member functions with the same name, but that would be bad technique.

  • @thomasmathews4592
    @thomasmathews4592 6 лет назад +1

    Great video. Could you consider doing constexpr as well?

  • @vineethnarayanavakicherla7219
    @vineethnarayanavakicherla7219 3 года назад

    Good explaination cherno sir

  • @PANCHO7532
    @PANCHO7532 2 года назад

    at 2:50 why you cast into (int*) instead of (int)?
    I mean sure, it doesn't compile when using (int) but *why* do we need or what's the reason of casting into an int*?