CLASSES vs STRUCTS in C++

  Рет қаралды 477,184

The Cherno

The Cherno

Күн бұрын

Пікірлер: 444
@poipoi300
@poipoi300 3 жыл бұрын
When I was taking my first class on object oriented programming the teacher showed us classes and I was like "Oh so is this the same thing as a struct?" and she said no without explaining more. I'm glad to see this video lol.
@MOWAuthor
@MOWAuthor 2 жыл бұрын
Oh my god, this brings back nightmares of Uni. I program in C++ using a mostly C style structure. Always have. It makes more sense to me, and I don't believe in the bull of having to protect you from yourself (The primary purpose of Private Variables) I basically said the same thing to my teachers, and they also just say no, without elaboration. After more discussion over the years I was there, I can only gather that the world as a whole prefers Classes because of Private Variables mostly as a protective layer to stop you interfering with a variable you didn't mean to. Which is absolutely ridiculous. Because you simply shouldn't be accessing random variables for no reason while you program. Otherwise, what the hell are you doing?
@poipoi300
@poipoi300 2 жыл бұрын
@@MOWAuthor I also don't really get the purpose of hiding variables from yourself either. Maybe in team projects where you don't trust your fellow programmers and you want to make sure a certain piece of data is handled correctly lol so you just give them functions.
@novusstudios1744
@novusstudios1744 2 жыл бұрын
@@MOWAuthor well I think it's more of a "prevention is better than cure" kind of thing. Tbh I get what you're saying but it's more of a preference thing, so to say it's somewhat "ridiculous" is kinda not really unless you mean it only from your standpoint and persons who share it also
@Ferocious_Imbecile
@Ferocious_Imbecile 2 жыл бұрын
Paying $$$ for an education that fails. How many times have I experienced that?
@poipoi300
@poipoi300 2 жыл бұрын
@@RandomUser2401 I don't think so but I may be wrong. There's plenty of ways to implement unintended behavior in C.
@zperk13
@zperk13 5 жыл бұрын
#define struct class yeah that's not going to confuse anybody
@catostre
@catostre 4 жыл бұрын
I actually got it right off the bat without having heard of that before, but that's just me.
@lotharmatthaus7723
@lotharmatthaus7723 4 жыл бұрын
Well yes, but actually no
@DuffkaBigNerd
@DuffkaBigNerd 4 жыл бұрын
Bruh.....
@computerprogrammer7942
@computerprogrammer7942 3 жыл бұрын
Dam
@Me-og5iy
@Me-og5iy 3 жыл бұрын
that was funny Xd
@Reydriel
@Reydriel 2 жыл бұрын
To elaborate more on what Cherno says in this video, structs are a legacy feature from C which can group together variables into a user-defined type, BUT CANNOT contain functions (because C did not have OOP features such as methods). This is why it's common in C++ to use structs for "classes with no methods", because that was how they were used in C.
@1apostoli
@1apostoli 2 жыл бұрын
C++ structs can contain functions.
@kaze8447
@kaze8447 2 жыл бұрын
@@1apostoli Yes, they were talking about C.
@abolfazlrezaei5397
@abolfazlrezaei5397 Жыл бұрын
when you know java structure and reading this, it is somehow funny and amazing how languages grew and become more useful and flexible😅
@defnlife1683
@defnlife1683 Жыл бұрын
@@jazzfan67 yeah. C is awesome. There’s always a simple workaround.
@billy818
@billy818 Жыл бұрын
but you can just make functions that operate on structs giving you something verry similar to classes. the real difference is scope (private members) and inheritance
@armastro99
@armastro99 6 жыл бұрын
love that chicken in the background
@treyquattro
@treyquattro 6 жыл бұрын
I think he's really a New Zealander...
@WayneRiesterer
@WayneRiesterer 5 жыл бұрын
@@treyquattro Hey...? It would be a sheep in that case :D
@woosix7735
@woosix7735 4 жыл бұрын
his whole room decoration is great
@staticbits
@staticbits 3 жыл бұрын
I watched through the entire video without noticing that XD
@pierfrancescopeperoni
@pierfrancescopeperoni 3 жыл бұрын
I agree. And also the human who is speaking is interesting to listen to.
@Ivan-xw4pr
@Ivan-xw4pr 4 жыл бұрын
For anyone struggling with: #define struct class Basically what he did there is he told the compiler to treat "struct" as a "class". For example u could do same thing to types like this: #define INTEGER int And you still could instatiate "INTEGER" the same way you would do it for ""int". INTEGER a = 8; ============== is same as: ============== int a = 8; Hope that explains it.
@twitchoff1114
@twitchoff1114 4 жыл бұрын
Just one confusion here, if we #define struct class wouldn't the code break because of the default visibility difference between them? For example if there is an struct Vec2 and we are using the x coordinate like: struct Vec2 { float x, y; }; struct Vec2 vector; vector.x = 5.0; Then this will surely throw an compile error. Please explain it to me if you know the answer otherwise I will make this comment global.
@Ivan-xw4pr
@Ivan-xw4pr 4 жыл бұрын
@@twitchoff1114 Yes its just as you said. You would get compiler error if you were to do that.
@elsyabektinugroho2342
@elsyabektinugroho2342 7 ай бұрын
ty
@humbledcomposer
@humbledcomposer 8 ай бұрын
I just realized you were talking about inheritance and I remember what it was like all those years ago when I first heard the word. Most people feel the same way: What in the world is inheritance? Inheritance is probably one of the most useful benefits to classes you have available to you, to allow a class to "inherit" the public members and methods of another class. They also allow for virtual methods in the base class that all inherited classes has the option of overloading (basically means to re-define), to give them unique functionality. They are incredibly powerful, and I cannot imagine a world without them. We use them everywhere in c#, I assume c++ is no different.
@manfredkernMK
@manfredkernMK 7 жыл бұрын
I have seen every video up to now and they help me very much to refresh my out-dated C++ knowledge
@luxxsolari
@luxxsolari Жыл бұрын
I see some people stating that one additional "difference" between structs and classes is that the structs are stack-allocated and classes are heap allocated. This may be true in languages like C#, however in C++ you may allocate classes (objects, actually) and structs in either the stack or the heap, it's just done differently in code (to allocate on the heap, you use the keyword "new"). You may as well have stack-allocated classes and heap-allocated structs; as Cherno says, there are very few rules in C++ when it comes down to it.
@fazillatheef
@fazillatheef Жыл бұрын
After so many years just learned that structs in C++ can have functions. May have seen this in code many times, but never thought they were structs.
@BackerSultan
@BackerSultan 5 жыл бұрын
I'm coming from the world of C#, and I remember that in C#, classes are reference types while structs are value types.
@zjfjack
@zjfjack 4 жыл бұрын
the same as Swift, but it seems C++ is different
@zjfjack
@zjfjack 4 жыл бұрын
MR MEME Thanks for the reply. I am quite clear about this now, after 2 months study. 😉
@digitalconsciousness
@digitalconsciousness 3 жыл бұрын
Yeah, it caught me off guard when he didn't mention this. I guess there is that big difference between C# and C++.
@TheZenytram
@TheZenytram 3 жыл бұрын
i come from C background and Classes is just a Struct that use functions, but now Struct uses functions too so they made them the same.
@faithium7077
@faithium7077 3 жыл бұрын
Also in C#, with structures, you are forced to initialize all your fields in the constructor so you don't have uninitialized variables
@ajoshdoingthings541
@ajoshdoingthings541 9 ай бұрын
Currently trying to wrap my hand around structs and this video clarified way more than cppreference, SO or w3
@adriannuske
@adriannuske 2 жыл бұрын
Struct is a Value Type, Class is a Reference Type. Meaning Struct is kept in Stack Memory and a Class only keeps a reference in the Stack (rapid access memory) and the actual content in the Heap Memory. Assigning a variable containing a Struct to another, copies the whole Struct, as contrary to variables containing Classes, that only the referene is copied (meaning pointer, mem address)
@alejandroperez5368
@alejandroperez5368 9 ай бұрын
Not in C++
@jamesmnguyen
@jamesmnguyen 7 жыл бұрын
Subtitles again, "Hey little guys and my name is Machado and welcome to my people of clock series"
@spiritwolf448
@spiritwolf448 7 жыл бұрын
LOL!
@markeyboi6545
@markeyboi6545 7 жыл бұрын
You know if you have the time, you can manually add the _correct_ subtitles by clicking the settings gear -> subtitles/cc -> add subtitles/cc.
@markeyboi6545
@markeyboi6545 7 жыл бұрын
I went ahead and did it for this video since I had time.
@dsblocks
@dsblocks 6 жыл бұрын
Andrew Mitchell thank you. I believe, there have to be more people like you.
@LANstorm.
@LANstorm. 5 жыл бұрын
​@@markeyboi6545 thanks for ruining the funny meme.
@RathFGC
@RathFGC 7 жыл бұрын
This is a WONDERFUL series. I'll definitely be supporting on patreon
@CristalMediumBlue
@CristalMediumBlue 8 ай бұрын
Thanks! By supporting him, you are indirectly supporting many other people that learn from him.
@dxlge
@dxlge Жыл бұрын
My notes: There is basically no difference at all between classes and structs beside for one thing. Structs are by default public and cannot be private. The main place to use structures is when you just need to group a bunch of variables maybe of different or the same types together. If you just want to represent data in a structure use a struct. Classes should be used for things that are more complicated and when you need to use inheritance but at the end of the day its up to you.
@nadjibam6384
@nadjibam6384 Жыл бұрын
What do you mean "Structs can not be private" You can't set them to be private at all or just the default is public
@DairanPL
@DairanPL Жыл бұрын
Structs can have private members, he even does it at 1:55 in the video
@dxlge
@dxlge Жыл бұрын
​@@DairanPLur right thats my bad
@roja
@roja 2 жыл бұрын
Commenting for your exposure. The best channel on KZbin for C++ !!!
@codingwithelhacen990
@codingwithelhacen990 4 жыл бұрын
every time I watch a video on your channel, I learn something new that sticks in my head forever. #Define struct class. That one is mind-blowing!
@alionking1023
@alionking1023 4 жыл бұрын
the auto generation captions are hilarious "he little guys my name is Machado and welcome back to my people of clock series"
@nanithefk866
@nanithefk866 7 жыл бұрын
Hey Cherno, would you mind making an episode explaiing a bit how char, char static arrays, char dynamic arrays, strings, string arrays etc. work in C++ and when to use which one? I've always found this whole confusion very difficult to deal with.
@erikthegodeatingpenguin2335
@erikthegodeatingpenguin2335 7 жыл бұрын
I find that for the most part, just using std::string is a safe bet. (But I doubt this comment is very helpful..)
@Xx_McJasper_xX
@Xx_McJasper_xX 3 жыл бұрын
Gotta be honest. I've only ever used structs in C programming. Didn't even think about using them in C++. Good to know I wasn't missing anything.
@msidc1238
@msidc1238 4 жыл бұрын
I am addicted to learning c++ right now thanks to you.
@justasydefix6251
@justasydefix6251 4 жыл бұрын
count me in
@duqan9060
@duqan9060 6 жыл бұрын
OMG He's not Indian
@hazerjm
@hazerjm 6 жыл бұрын
Finally!
@himanshu6489
@himanshu6489 6 жыл бұрын
buwahahahahaha but I am. you can't get rid of us. never!
@HermanWillems
@HermanWillems 6 жыл бұрын
I just wonder why there are so many of you. Do indians love sex so much or something? Is there some kind of Sex religion that makes people make alot of kids? Just wondering.. I don't really have anything against Indians. :)
@ChimiChanga1337
@ChimiChanga1337 6 жыл бұрын
Herman Williams large numbers gives rise to even larger numbers. And in India people religiously give birth to kids at least 2 per family. And during the 50s to 80s most Indians had more than 3 kids per family. Previously most of the children would die because of disease, malnutrition etc. But after independence and advancements in science the deaths decreased but people still gave birth more children thinking most of them won't survive. We took some time to adapt. Now I think its around 2 per family. Hence the population explosion.
@utkarshgupta3
@utkarshgupta3 6 жыл бұрын
Haha, I feel you bro!
@steve_rico
@steve_rico 11 ай бұрын
Just learning C++ again .... Spending time understanding the nuances is paying off. Useful vid.
@MatthijsvanDuin
@MatthijsvanDuin 4 жыл бұрын
The difference in default access also applies to inheritance: struct Foo : Bar // Bar is a public base class of Foo class Foo : Bar // Bar is a private base class of Foo
@leixun
@leixun 4 жыл бұрын
*My takeaways:* 1. The only difference between classes and structs 0:47, by default, the classes are private but the structs are public 2. When to use class and when to use struct 3:35, basically Cherno says that he uses struct just to struct data, and if he needs more functionalities and inheritance, he uses class
@Zjarrain
@Zjarrain 4 жыл бұрын
Nice notes!
@ianmoseley9910
@ianmoseley9910 3 жыл бұрын
I'd probably limit struct to data types where they only need to supply basic operator functions.
@yogeshdeveloper5346
@yogeshdeveloper5346 4 жыл бұрын
I don't know why, but yours & mine thinking towards the keywords & software design totally match! For eg: the struct keyword for data only, the class keyword for complex works (that's why they are made for)!
@SirWussiePants
@SirWussiePants 3 жыл бұрын
Yes, though back in the old (very old) days we created "classes" in C by having pointers to functions in the struct. Now days I use struct to organize data and classes to act upon data. In my world a class may contain a struct but a struct would not contain a class. If that makes sense.
@mjl1966y
@mjl1966y Жыл бұрын
Struct is a public class that can't be instantiated. Wow, where have you been all my life? What a great explanation.
@joymakerRC
@joymakerRC Жыл бұрын
i love you by the way, great series, so how i make the difference is if there is just data ( varables with types) with no functions then its a struct, as soon as you add functions then it becomes a class, some how i feel like struct is supposed to be really simple and class is for more complicated things. no matter what if you program you are awesome.
@oasishurl
@oasishurl 5 жыл бұрын
Dude, thank you so much holy hell--I've been looking all morning.
@serkanozturk4217
@serkanozturk4217 2 жыл бұрын
Personal notes: -only difference is while class members are private by default, struct members are piblic by default -the reason it exists in c++ is backwards compatibility since c has structs -struct mah be preferred by some when it is for so simple use -struct is ugly for inheritance
@mozeeen1
@mozeeen1 Жыл бұрын
Thank you man. This was helpful. I came from c# background and struggled to understand a code with struct.
@smileynetsmileynet7922
@smileynetsmileynet7922 4 жыл бұрын
I use structs when I either need C compatibility or when I am using them in only the C way and have no methods or non-public data. Such as the reg struct in PNF. I had a bunch of variables to group as registers in PNF. PNF works like asm code, but its its own type of "register rich" computer.
@marcoreus1087
@marcoreus1087 4 жыл бұрын
haven't watched any of your previous videos but after just watching 3 minutes of this video I came to understand that you are just awesome teacher. Really appreciate your approach.
@samdavepollard
@samdavepollard Жыл бұрын
i'd forgotten that structs could contain methods i was assuming that structs were always just plain old data very useful many thanks for sharing your knowledge
@tapiocaferoz02
@tapiocaferoz02 3 жыл бұрын
Nice explanation! I do love how your channel covers C++ so well, it's hard to find good channels about this.
@BenStoneking
@BenStoneking 6 жыл бұрын
Excellent explanation! I knew that they only differed by private vs public defaults but I wanted to know the usage of a struct over an object! So basically, use struct for creating data structures, use class for creating objects! This was so helpful!
@jacobw703
@jacobw703 5 жыл бұрын
Honestly one of the best videos I've seen on this specific topic. Keep up the good work dude!
@petrumarian6491
@petrumarian6491 14 күн бұрын
Well, beside the default access specifier difference, a struct is a value type, whereas a class is a reference type. This incurs some significant differences, therefore they are not technically the same.
@TheReficul
@TheReficul 6 жыл бұрын
The C++ Core Guidelines C.2 states: "Use class if the class has an invariant; use struct if the data members can vary independently." So if you don't have any preexisting style, your best bet is to stick to that.
@unknownbutawesome8759
@unknownbutawesome8759 3 жыл бұрын
@Over Yonder perhaps something to do with OOP features like inheritance, polymorphism, etc?
@RAHULTMNT100
@RAHULTMNT100 3 жыл бұрын
i think they mean private variables when they say invariant
@beraulgd3662
@beraulgd3662 3 жыл бұрын
Invariants are conditions that must hold true for the object of a class to have valid functionality during its lifetime - basically, its when something has to rely on a set of presuppositions to work right. That’s my understanding after a google search, idk, I’m no software engineer
@ДмитроПрищепа-д3я
@ДмитроПрищепа-д3я 2 жыл бұрын
@@unknownbutawesome8759 these are exactly same for classes and structs. And you can inherit one from the other easily too.
@mickyyang6652
@mickyyang6652 2 жыл бұрын
@Over Yonder Usually, we use structs for "combinations of data". And according to Google style, structs should not have methods, they're just something like basic types that have no complex behaviors. So, for example, if I just want to make the code clearer and more readable, I'll choose write a struct rather than many variables (just like choosing an array instead of many variables): struct Student { std::vector scores; std::string name; };
@JustKatoh
@JustKatoh 6 жыл бұрын
TL;DR Use structs for small stuff, classes for big bois
@marekgrencstein7215
@marekgrencstein7215 6 жыл бұрын
There is no difference. Structs can inherit from classes, and vice versa. They are the same. Only difference is the default visibility. Struct contents are public by default, class is private.
@gordonfreemanthesemendemon1805
@gordonfreemanthesemendemon1805 6 жыл бұрын
He obviously knows that, he's in the comments of a dude saying that for 8 mins
@MsJavaWolf
@MsJavaWolf 5 жыл бұрын
@@marekgrencstein7215 It's the same, but there are conventions.
@xCwieCHRISx
@xCwieCHRISx 5 жыл бұрын
I use structs when i dont need methods. I also dont use contrusctors in a struct. Maybe because I learned C first for me structs are just a container of objects. Or writing C-Style (functional) code and using benefits of C++ like no need of typedef, overloading functions etc..
@rafal9ck817
@rafal9ck817 3 жыл бұрын
TL;DL - too long didn't listen
@TalisBarbalho
@TalisBarbalho 7 жыл бұрын
I'm sure this the only channel that I would actually notice if you went through a weekend without posting one video. I'm looking forward for the more advanced videos. Thank you.
@VanJackk
@VanJackk 5 ай бұрын
You teach me how to do was very simply and fast to understand. Thanks!
@hubertlenningrad2252
@hubertlenningrad2252 3 жыл бұрын
Bro, can't believe you're giving this information for free. Thanks!
@_VeljkoMiletic_
@_VeljkoMiletic_ Жыл бұрын
I would use struct just to store variables in structured way, because that is what structures do in C (they doesn't have methods).
@bluesillybeard
@bluesillybeard 2 жыл бұрын
in C#, the difference is more fundamental: structs are value types, while a class is always a reference type, so anything that modifies the object modifies the original object, as opposed to a struct where it will modify the individual copy. This is a C++ video, but I thought I would share that little fact. (I'm not an expert, so I might be wrong... A fact check would be appreciated)
@heavymetalmixer91
@heavymetalmixer91 2 жыл бұрын
You can even make Structs in C# become Reference-type to make things even more versatyle and convoluted LOL. Then again, the Unity Engine mostly uses Structs instead of Classes so that kind of versatility is needed.
@BAMBAMBAMBAMBAMval
@BAMBAMBAMBAMBAMval Жыл бұрын
It would be super cool if you made a video called something similar to "all c++ keywords and what they do" Like a reference video that you can look through and be like "oh yeah i dont know how vectors work" and then you could go learn more about vectors for example...
@jaidev2717
@jaidev2717 4 жыл бұрын
Liking each and every video before even listening to the whole thing...That good is this series!
@hyper7354
@hyper7354 2 жыл бұрын
There would a difference because in C a strict can’t store a method but the closest it can get, I think, is storing a pointer to the function
@sadeepthabandara8117
@sadeepthabandara8117 Жыл бұрын
Me: Nice. I'll finally learn the difference between a class and struct Cherno: There's no difference Me: Now that's a plot twist :o
@momokoko8811
@momokoko8811 6 жыл бұрын
Also, struct inheritance is public by default.
@ubiquitous9173
@ubiquitous9173 4 жыл бұрын
So instead of: struct s : public a { } You do: struct b : a { } ?
@manameisjeffie656
@manameisjeffie656 3 жыл бұрын
the simpeliste tutorial in this tutorial series
@johnmcway6120
@johnmcway6120 3 жыл бұрын
Wait. So c++ has classes making it an oop language. Structs are technically the same with classes. C has structs. But it doesn't have classes. But classes are the same with structs. Wat?
@Evan490BC
@Evan490BC 3 жыл бұрын
Except they are not (the same). C structs don't have methods.
@aPoCoTuToDac
@aPoCoTuToDac 7 жыл бұрын
0:47 or 1:40 the second difference is that you can't use struct in *templates* (only classes allowed) :)
@TheCherno
@TheCherno 7 жыл бұрын
What do you mean? You can definitely use structs with templates.
@aPoCoTuToDac
@aPoCoTuToDac 7 жыл бұрын
To be precise I was meant that you can't use word struct in template declaration. You can write: template or template but you can't do that: template
@TheCherno
@TheCherno 7 жыл бұрын
+aPoCoTuToDac that’s true, but in this case class is just synonymous with typename, it’s not really “class” in the traditional sense. I would always write typename instead of class for template arguments anyway, it makes more sense.
@aPoCoTuToDac
@aPoCoTuToDac 7 жыл бұрын
yup, but the example with completely valid template declaration (i.e. template ) shows that in C++ words "struct" and "class" are not fully interchangeable. If you have one such declaration, and you do #define like in 2:56 but otherwise (i.e. #define class struct) you will run into trouble. :)
@TheCherno
@TheCherno 7 жыл бұрын
+aPoCoTuToDac sure, but this video is about classes vs structures, the actual concept, not literally the keyword in every way. Much of C++ is contextual, for example the static keyword.
@warn2571
@warn2571 4 жыл бұрын
It boils down to organizing our thought with a redundant piece of functionality in C++. The way I see it, structs are groups of variables and functions that support a standalone concept like a vector or maybe a data structure. A class should be a noun like a player or a map. Rules: * It has to be a class if you are inheriting something. * It has to be a struct if you are use C * If you are inheriting something and using C... stop and think about your choices in life.
@ianprado1488
@ianprado1488 5 жыл бұрын
Roxas from Kingdom Hearts teaches C++
@aarushprasad4493
@aarushprasad4493 2 жыл бұрын
Cherno: My name is the Cherno and welcome back to my C++ series-- Me: *subscribes instantly* we need more cppers
@djskippimusic
@djskippimusic 3 жыл бұрын
I like to use structs inside unions to give the variables initial values without a constructor. If I used a class the extra public keyword makes it less of a one line solution. Structs in general I think look cleaner in unions tbh.
@CRBarchager
@CRBarchager 7 жыл бұрын
Another great video from you. Now moving along with a better understanding of the differences. A much, MUCH simpler implementation of the two compared to C# where there are massive difference in the two types and the way you use them.
@bwatson4000
@bwatson4000 2 жыл бұрын
As my grandmother used to say, "What the struct? Well that kicked my class."
@utilityy
@utilityy 2 жыл бұрын
I really like your teaching style, Yan. Love these videos :D
@christophmuller9728
@christophmuller9728 4 жыл бұрын
Thanks bro
@rcookie5128
@rcookie5128 7 жыл бұрын
haha nice to see a follow up video; mentioned the structs under the last video and now here we are ^^ awesome
@candle-likeghost9523
@candle-likeghost9523 3 жыл бұрын
For me, classes are usually strong enough to have human-like responsibility while struct is more like a drawer (maybe a smart drawer as you can add some functionality to it)
@GenericPhantom1
@GenericPhantom1 2 жыл бұрын
Classes and structs are very similar and the only technical difference is that classes are private while structs are public.
@michaelwoodruff5752
@michaelwoodruff5752 6 жыл бұрын
Love this series.
@Monyamu
@Monyamu 5 жыл бұрын
I use some similar differentation in use between classes and structs. If the real thing is just "represented" with some details by the data i stored, its a class. If its "defined" by the data stored then its a struct. "Connections between things" are specific cases for me however. Even if you can further describe the same connection with more details, somehow my brain refuses to treat a connection the same if it have any kind of more requirements (even trivial ones) than before. It's always just similar, but not the same. Must be a "bug" in my cognition, but i'm using struct accordingly.
@gnitsaf
@gnitsaf 5 жыл бұрын
loving this series
@mikeandjamiejarboe7211
@mikeandjamiejarboe7211 11 ай бұрын
Amazing Videos - Thank you The Cherno
@icetn123
@icetn123 5 жыл бұрын
you lost me after: #define struct class
@coolfred9083
@coolfred9083 4 жыл бұрын
Anywhere you wrote _struct_ is replaced by _class_ when the code is actually compiled.
@monfernape
@monfernape 6 жыл бұрын
I don't know why but you are way too much efficient and different from other people teaching C++.
@adamhendry945
@adamhendry945 Жыл бұрын
Can you do a video on padding and alignment and also things like the pIMPL idiom?
@casperes0912
@casperes0912 3 жыл бұрын
So I come mainly from Swift, where class and struct are two rather different things. But my idea of what the difference should be, based on my background in swift, is that a class has identity and a struct does not. So struct Point { x: Int; y: Int } does not have identity, because two points with identical x and y values are in every aspect, identical. If I return you one or the other it doesn't really matter. It's a value type essentially. A Player object: class Player { p: Point } even if it effectively holds the same data as the Point struct now effectively has identity when we think about it and will, in Swift, act as a reference type
@harshadbanate3327
@harshadbanate3327 3 жыл бұрын
Amazing content, he explained the difference very well!
@AnkurDeka
@AnkurDeka 4 жыл бұрын
This is absolutely mind blowing! I didn't know structures can contain function.
@AnkurDeka
@AnkurDeka 4 жыл бұрын
I always thought that structures can contain data whereas classes can contain data as well as functions. I guess that's the way I was taught in high school.
@candle-likeghost9523
@candle-likeghost9523 3 жыл бұрын
In C#, the struct becomes very strict, like you can't do inheritance. Maybe because Microsoft's workers had watch this video.
@FedJimSmith
@FedJimSmith 4 жыл бұрын
having both known C++ & C#,, it's a bummer because in C# struct vs class has a significant difference
@TopViewFar
@TopViewFar 6 жыл бұрын
short and precise, well done!
@rupayanc
@rupayanc Жыл бұрын
Feels like in case of DDD, classes would be for entities and aggregates whereas structs would be for value objects
@twitchoff1114
@twitchoff1114 4 жыл бұрын
Just one confusion here, if we #define struct class wouldn't the code break because of the default visibility difference between them? For example if there is an struct Vec2 and we are using the x coordinate like: struct Vec2 { float x, y; }; struct Vec2 vector; vector.x = 5.0; Then this will surely throw an compile error.
@chenleyi
@chenleyi 3 жыл бұрын
That's fuckng good
@beypazariofficial
@beypazariofficial 3 жыл бұрын
and not getting cencored from some moderator... absolutely great.
@industrialdonut7681
@industrialdonut7681 3 жыл бұрын
it finally makes sense to me now that I understand that structs in c++ are massively different and upgraded from structs in C lol
@sushilasriv19
@sushilasriv19 3 жыл бұрын
Short answer - Use only class because it can do everything!!
@johnpekkala6941
@johnpekkala6941 2 жыл бұрын
Then I am on the right track it seems trying to grasp structs a bit better. I work in Unreal Engine a lot. In UE a struct defined in Blueprints is only able to contain variables, not functions. In UE C++ however they can just like in ordinary C++ also contain functions. Recommended just as shown here are then I guess functions only related to these specific variables like constructor + getters and setters. As I get it and as stated in the video structs are mostly used for grouping variables together for organisation and the actual program logic should be put inside of classes. This is a usage definition I have seen elsewhere also regarding when and how to use classes vs structs. Another thing is that a struct can't be static so they always themselves need to be instantiated somewhere like inside of a class. Therefore they are as I get most useful when u have multiple things all needing the same set of variables like say all the players in a game ect. Players have common variables like heatlh, strength ect. You can thus create a struct called Players and put in variable declarations for health, strength and other player related things . Then each player gets his own instance of that struct like Players Player1; Players Player2; ect and then you can set and get the values for every player like Player1.health = 100, Player2.strength = 50 and so on. The main goal of structs is then as said before organisation of data. Instead of having loose variables everywhere u group them together with a struct related to that particular object type. That is so far how I understand structs should be used. Correct me if im wrong. :)
@BiGGeSMK
@BiGGeSMK 5 жыл бұрын
I don´t get the "void Add(const Vec2& other) function... why did he pass it by reference ?? because we don´t manipulate the other variable in this method so the code would be valid without the references ??
@gopro2804
@gopro2804 3 жыл бұрын
I found this helpful. Thanks
@marcol6268
@marcol6268 3 жыл бұрын
Im new to c++ so this might be a stupid question, but a method is basically nothing else than a function within a class or structure, right? Also: If you keep it really simple (by that i mean simple, as it would probably never ever be in "real" code) you could also substitute some classes with just functions, cant you? (void functions)
@abdelz1617
@abdelz1617 2 жыл бұрын
Great video, thank you!
@ericww32
@ericww32 6 жыл бұрын
Never thought about public and private. Thank you!
@chineduabalogu
@chineduabalogu Жыл бұрын
question is like asking what is the difference between an Object literal and a Class in js lol
@DougCube
@DougCube 4 жыл бұрын
There is one more difference. The default inheritance mode for a class is private, whereas the default inheritance mode for a struct is public.
@aminhashemi7457
@aminhashemi7457 3 жыл бұрын
thanks for your great video! keep up the good work
@s2253455
@s2253455 7 жыл бұрын
Thanks Cherno
@ahmedrateb5867
@ahmedrateb5867 4 жыл бұрын
I always thought that the implementation of struct in C didn't allow for method declaration and that is how I always saw as the major definition between struct and class. Now, I am totally bewildered, help anyone
@Lazy_Chocolate_Main
@Lazy_Chocolate_Main 6 ай бұрын
WOOOW, Today I learned that there is no difference, just to make sure, you can do inheritance in structs too?
@thawedmind
@thawedmind 2 жыл бұрын
I'm going through this course online and every video, I'm like I'll just skip through this cause I know the concepts and I just want to get a good set of notes, but every video I get a Oh So that's how that works moment!😆
@johanrojassoderman5590
@johanrojassoderman5590 3 жыл бұрын
So to summarize: a struct is just the class' little brother whom doesn't have to take as much responsibility.
@SankoshSaha_01
@SankoshSaha_01 3 жыл бұрын
I feel offended
@alirezaamani2027
@alirezaamani2027 3 жыл бұрын
So that you realize how nice a teacher he is, I actually can say no to Fifa (video game) and watch his tutorials instead.
@thestarinthesky_
@thestarinthesky_ 4 жыл бұрын
Hello @The Cherno. May I know if we are allowed not to add (&) to the method Add, like " void Add (const Vec2 other)"? I tested and the result is the same. Why did you use that? Thank you.
@Mikolka221
@Mikolka221 4 жыл бұрын
Result is the same, but in your case input class/struct is copied whilst with '&' it's taken by reference.
@aagmonch7923
@aagmonch7923 2 жыл бұрын
Thanks
@meh398
@meh398 6 жыл бұрын
Thanks a lot, Cherno.
How to Write a C++ Class
11:32
The Cherno
Рет қаралды 418 М.
Templates in C++
17:58
The Cherno
Рет қаралды 601 М.
If people acted like cats 🙀😹 LeoNata family #shorts
00:22
LeoNata Family
Рет қаралды 4,1 МЛН
The Ultimate Sausage Prank! Watch Their Reactions 😂🌭 #Unexpected
00:17
La La Life Shorts
Рет қаралды 8 МЛН
Ice Cream or Surprise Trip Around the World?
00:31
Hungry FAM
Рет қаралды 21 МЛН
Harder Than It Seems? 5 Minute Timer in C++
20:10
The Cherno
Рет қаралды 215 М.
This Algorithm is 1,606,240% FASTER
13:31
ThePrimeagen
Рет қаралды 852 М.
why are switch statements so HECKIN fast?
11:03
Low Level
Рет қаралды 427 М.
WHY did this C++ code FAIL?
38:10
The Cherno
Рет қаралды 293 М.
31 nooby C++ habits you need to ditch
16:18
mCoding
Рет қаралды 824 М.
Macros in C++
19:36
The Cherno
Рет қаралды 241 М.
Static for Classes and Structs in C++
9:12
The Cherno
Рет қаралды 359 М.
Lambdas in C++
11:54
The Cherno
Рет қаралды 346 М.
If people acted like cats 🙀😹 LeoNata family #shorts
00:22
LeoNata Family
Рет қаралды 4,1 МЛН