Virtual Functions in C++

  Переглядів 483,653

The Cherno

The Cherno

6 років тому

Twitter ► / thecherno
Instagram ► / thecherno
Patreon ► / thecherno
Slack ► slack.thecherno.com
Series Playlist ► • C++
BEST laptop for programming! ► geni.us/pakTES
My FAVOURITE keyboard for programming! ► geni.us/zNhB
FAVOURITE monitors for programming! ► geni.us/Ig6KBq
MAIN Camera ► geni.us/t6xyDRO
MAIN Lens ► geni.us/xGoDWT
Second Camera ► geni.us/CYUQ
Microphone ► geni.us/wqO6g7K

КОМЕНТАРІ: 494
@greob
@greob 6 років тому
There's no such thing as "minimal impact" in my opinion, there's impact or no impact. I'd rather avoid impact altogether. :P
@TheCherno
@TheCherno 6 років тому
If you live your life without recognising levels of impact and absorbing some, you're not going to get anything done.
@greob
@greob 6 років тому
I was just kidding, but the topic of optimization in programming is very interesting to me. ;)
@DarkLevis
@DarkLevis 6 років тому
Some additional runtime costs are acceptable to make the COST of actually programming it smaller. And hay, people even use python to program which gives you a heavy runtime penalty compared to C/C++...
@kevycatminecraftmore7721
@kevycatminecraftmore7721 6 років тому
Interesting.
@vighnesh153
@vighnesh153 5 років тому
Let's say, I just touch your cheeks using a fingertip and then I slap you. Both are impacts. The first 1 will just hurt you mentally (some feeling of awkwardness) but the second 1 will hurt you both physically and mentally). You may ignore the 1st one and move on with your life, but you won't be able to forget about the second one for quite a while. I hope I have made my point.
@JuanPabloOrtizYax
@JuanPabloOrtizYax 5 років тому
Brief explanation of uncovered topics (yet) in this video: Since strings is not a primitive type of C++ we need to import the header #include To use string without namespace std is like this: std::string MyString("hello") This is equivalent to: std::string MyString = "Hello" Pointer instances: new keyword returns a pointer std::string* MyString = new std::string("Hello") And if is a pointer you access their properties with -> instead of a dot (.) std::cout length()
@michamarzec9786
@michamarzec9786 4 роки тому
Thanks for explaining. Now it all makes sense.
@archsheep7772
@archsheep7772 4 роки тому
Thank you for your detailed explanation!
@carlosantoniogaleanorios4580
@carlosantoniogaleanorios4580 4 роки тому
Thanks, this was really helpful. There is one more thing that was not explained before (as far as I can recall). In the constructor of the player class, he uses a constant string "name", which he passes by reference (first, I don't understand why this has to be a constant or a reference) and then he goes on to add the colon and m_name(name). I think I have seen in some other tutorial series that this is the way to load a value into a constant but I am not sure now.
@allenguan6755
@allenguan6755 4 роки тому
thank u bro, love u every much
@nendo502
@nendo502 4 роки тому
So what's "Player(const std::string& name) : m_Name(name) {}" exactly? Could u give me a keyword of this stuff to search? I have no idea what it is and how to search it for details.
@milenkopizdic9217
@milenkopizdic9217 3 роки тому
For the newcomers, my suggestion would be to watch "stack vs heap memory in C++", "how to create/instantiate objects in c++" and "the new keyword in c++" before watching this.
@vikkio88
@vikkio88 3 роки тому
thanks man, this is exactly what I was wondering
@furki6449
@furki6449 2 роки тому
thx :)
@aniketnegi2642
@aniketnegi2642 2 роки тому
thanks man!
@rustyelectron
@rustyelectron 2 роки тому
Thanks a lot.
@Hoppitot
@Hoppitot 2 роки тому
also inheritance in C++ really clears up the class Player : public Entity
@luisantonioreyes9375
@luisantonioreyes9375 3 роки тому
My English captions: "my name is HMO and welcome back to my syphilis gloss series".
@Till27_Spence
@Till27_Spence 2 роки тому
This is fax, i just tried it 🤣
@raoulbrigola5050
@raoulbrigola5050 5 років тому
By far the best channel on youtube to learn anything about c++! Thanks a lot cherno!
@nilsmelchert776
@nilsmelchert776 6 років тому
Beautiful set of tutorials. Probably the best I've seen so far for any programming language. I also like how it is divided into the different episodes that you can watch whenever you are only interested in a specific topic. Thank you for your time and please keep going like this!
@jonnyreh001
@jonnyreh001 Рік тому
You are the best Cherno. I am visiting your c++ series regularly. Basically when I run into a concept I need to get familiar with on the go :D
@bassbatterer
@bassbatterer 5 років тому
One of my lecturers actually went and dissembled the function calls for a Virtual function and for non-virtual functions for us to look at. The Normal function call executed 4 assembly instructions where as the Virtual function call executed 6, the additional 2 were dereferencing the pointer to the function pointer in the Vtable and then dereferencing the function pointer in the Class-specific function list. The overhead of 2 extra x86 instructions is next-to unnoticeable compared to the penalty of setting up a new stack-frame (which you have to do for both anyway) so the performance hit really in negligible.
@jonnywright8155
@jonnywright8155 3 роки тому
Excellent comment. I'm having an error now which mentions the vtable and I think I know what's going on now thanks to this explanation . Thanks!
@rutanshu85
@rutanshu85 3 роки тому
Thanks for sharing!
@CWunderA
@CWunderA 3 роки тому
Doesn't it matter how big your vtable is though?
@ronensuperexplainer
@ronensuperexplainer 2 роки тому
Dereferencing the function pointer can cost you 1000 instructions, because RAM has a high latency.
@petersansgaming8783
@petersansgaming8783 Рік тому
@@ronensuperexplainer depends. Couldn't one develop a prefetcher for this problem to reduce memory latency?
@work9167
@work9167 2 роки тому
This is short and beautiful, man! Please, continue doing what you do now
@PirateDion
@PirateDion 3 роки тому
Gotta say this video helped me understand virtual functions a lot more than anything else so far. Going to have to hunt down the other things that confuse me. I've been following a C++ tutorial app at work during breaks and such and these were stumbling blocks that undermined my whole understanding of polymorphism.
@RossYlitalo
@RossYlitalo 3 роки тому
Very nice explanation. Short and right to the point. It's easy to agree with your assessment that v-tables have such minimal cost that the inconvenience of not using them makes using them a no-brainer. Thank you very much!
@undeadguy2
@undeadguy2 2 роки тому
Figured id give you a thumbs up your 30 second explanation of what a virtual function does explained what my teacher could not do in 2 hours. Appreciate it sir.
@FranciscoCrespoOM
@FranciscoCrespoOM 4 роки тому
Most of the time I've seen a tutorial about virtual functions/vtables it works pretty well to make some diagrams on paper about how it works because it's such an abstract concept that in general people, especially newbies, find a hard time trying to understand what's happening under the hood.
@jonathangerard745
@jonathangerard745 3 роки тому
Virtual functions at first seemed harder than pointers for me... You've simplified it so elegantly... Thank you :)
@uwu8750
@uwu8750 6 років тому
Hey. Thank you so much! Had been waiting for this :)
@oleholgerson3416
@oleholgerson3416 5 років тому
good videos, keep it up. so glad you dropped the backgroundmusic
@Mikerandria
@Mikerandria 3 роки тому
Thank you! You explained VTable so easily. I can continue my Reverse Engineering tutorials in peace now. Keep up the good work!
@hamza.abdullah807
@hamza.abdullah807 4 роки тому
Guests: That's a very nice sofa, how comfy is it to sit on..? Cherno: No, it's just for the Aesthetics, I sit on the ground.
@per-axelskogsberg3861
@per-axelskogsberg3861 2 роки тому
This was perfect! Thank you 💕
@Grace-vg4hf
@Grace-vg4hf 6 років тому
I'm working on an assignment and this is so helpful, thanks so much!
@higheredjohn8316
@higheredjohn8316 6 років тому
Thanks for this - excellent refresher, and I learned a few new tidbits! Keep these coming.
@jahwni
@jahwni Рік тому
Haha loving the "is he going to be in focus or not?" game I'm playing watching through these videos 😂 such an epic series though mate, thanks!
@jackthehammer2245
@jackthehammer2245 6 років тому
Thanks for your video. One thing I could add for virtual keyword is to add this keyword on destructor of the parent class to prevent memory leak when a derived class is deleted through the parent pointer.
@notremonde1652
@notremonde1652 4 роки тому
You a life saver. keep up the good work!
@jairoacosta8940
@jairoacosta8940 4 роки тому
thank you, i always come back to reference your videos.
@user-cs6fq8ov7w
@user-cs6fq8ov7w 10 місяців тому
tysm! every topic you explain is so clear and simple
@tsvetomirdenchev1440
@tsvetomirdenchev1440 6 років тому
TheCherno, thank you for your great tutorials! Are you planning on making a tutorial on generic programming and C++ templates?
@willd4686
@willd4686 4 роки тому
Your videos are amazing tools for learning this stuff.
@greg6094
@greg6094 6 років тому
Cherno, you are an absolute legend!
@mockingbird3809
@mockingbird3809 4 роки тому
Excellent explanation. Something I'm looking for. Thank you so much.
@rcookie5128
@rcookie5128 6 років тому
Good stuff. Knew and used virtual functions already and funnilly enough I already learned this morning about the word "override" (also spoiler alert: final and volatile classes/member functions :O so much to learn!).
@greatbullet7372
@greatbullet7372 6 років тому
Love u dude
@PerchEagle
@PerchEagle 5 років тому
Dude ! You are wonderful, you are smart not to explain unnecessary stuff. Explain the important things and other important related aspects ! wow ..
@MilindNikose
@MilindNikose 2 роки тому
To better understand his code, go through these topics first: 1. String Class 2. Initialisation list 3. Arrow Operator 4. New keyword
@ishouldhavetried
@ishouldhavetried 3 роки тому
Let me tell you, I've been going to school for Software Engineering, and I have taken a bunch of different languages. Not a single one of them I really understood, just got it well enough to pass the class. But ever since I've found your CPP series, it's really helped, and I think I finally "get" it. This is the first language where I'm able to code without having to look up the solution 5 minutes into trying. Thank you for this series!
@jscorpio1987
@jscorpio1987 3 роки тому
I don’t know if it’s this guys videos that influence my feelings but I feel like C++ is the most intuitive programming language I’ve ever used. I feel like the newer higher level languages abstract things away to the point where they actually miss their goal of being easier, and wind up being much more confusing because there is so much going on behind the scenes that you never really know what exactly your code is doing.
@sripradpotukuchi9415
@sripradpotukuchi9415 3 роки тому
@@jscorpio1987 +1
@weiss588
@weiss588 2 роки тому
@@jscorpio1987 hell no
@yugantkadu8621
@yugantkadu8621 4 роки тому
Please make a video on V Table and Memory allocation. I have been watching C++ playlist, your videos are very good to get concepts more clear.
@michaelkane1072
@michaelkane1072 Рік тому
It is the luckiest moment in this year that i found these series right after i started learning cpp
@nunofigueira8691
@nunofigueira8691 Рік тому
Its was a very good and technical explanation, thank you.
@jasonsui9029
@jasonsui9029 2 роки тому
what a wonderful tutorial! Love it!
@pascalladal8125
@pascalladal8125 2 роки тому
Hey Cherno! Got to say great channel to learn c++, awesome channel to get used to the australian accent!! :)
@thomashaug5086
@thomashaug5086 4 роки тому
Dude you are great at explaining these things. Probably won't ever see this comment but thank you. I don't write comments a lot but I am teaching myself c++ and I've watched several of your vids and they are awesome and extremely helpful. Thanks again!
@Metachief_X
@Metachief_X 3 роки тому
Super easy explanation. Many thanks mate
@unmeinks5907
@unmeinks5907 Рік тому
this is virtually the best tutorial on youtube (:
@JohannesBergerSiroky
@JohannesBergerSiroky 20 днів тому
In 2:10 an entity pointer is pointing to a memory area assigned to a player object. It will get converted this way: Entity *e = (class Entity*)p; Great video!
@fireball111121
@fireball111121 3 роки тому
Thank God for these videos. My professor is super chill, but he's so bad at explaining things. He reads the book at us and then explains things as though we already know it and moves way too fast and gets way too complicated.
@AngelTaylorgang809
@AngelTaylorgang809 4 роки тому
awesome video man
@TheSexGod
@TheSexGod 4 роки тому
If you're confused by this video and the next video... come back to it after watching more of his videos in the playlist. They are a bit out of order.
@WindPortal
@WindPortal 4 роки тому
whew... that's a relief :D
@niranjanmadhu2609
@niranjanmadhu2609 3 роки тому
Thanx man
@grimm5751
@grimm5751 3 роки тому
ty
@Gr0nal
@Gr0nal 3 роки тому
Can confirm, just revisited this and it makes so much more sense
@vaiterius
@vaiterius Рік тому
thanks Cherno
@lali3049
@lali3049 Рік тому
Great explanation
@exoticcoder5365
@exoticcoder5365 3 роки тому
Super helpful gosh
@Hope-kf1nl
@Hope-kf1nl 4 роки тому
A+ video. Very helpful.
@mytech6779
@mytech6779 Рік тому
In Bjarne's book he states the cost of a vtbl as two memory accesses plus the function call, exactly. The vtbl is just a collection of pointers to pointers. Two accesses is proportionally huge for some special cases and totally insignificant for others.
@serkanozturk4217
@serkanozturk4217 Рік тому
Personal notes: - Virtual functions help us to override functions in subclasses - Normally, without virtual functions, when you call a fucntion, that funtion is called according to the type the variable is declared, not according to the real type that variable points to(see video) - Virtual function helps you to call the proper fucntion, not according to the declared type, but according to the actual type it points to - Override keyword is used to specify that that function overrides another func in base class(u don’t have to use though)
@manuelruiz9278
@manuelruiz9278 3 місяці тому
Nice video, thanks bro
@rahulpillai1271
@rahulpillai1271 8 місяців тому
6 years later and I am still waiting for your VTable Video Cherno. 😆 I love your series. Please link me to the vtable video if there is one.
@ManishSharma-fi2vr
@ManishSharma-fi2vr Рік тому
Thank You!!
@systematicloop3215
@systematicloop3215 6 років тому
I don't know if I particularly like the fact that the override keyword comes after the function signature. I come from C#, so it's strange to look at.
@vertigo6982
@vertigo6982 5 років тому
You must unlearn what you have learned.
@w3w3w3
@w3w3w3 4 роки тому
So many new concepts in this video, I wish you would just explain them quickly lol. All the other videos have been perfect. Thanks though.
@oraclematon9277
@oraclematon9277 2 роки тому
this is the best
@AbdulMoiz-ho8rx
@AbdulMoiz-ho8rx 2 роки тому
Excellent
@wayneray9489
@wayneray9489 2 роки тому
This is really complicated for me a new learner.
@youssofprogrammer2389
@youssofprogrammer2389 2 роки тому
Me too
@mohamedabdul633
@mohamedabdul633 3 роки тому
After surfing the internet for more than 10 minutes, and this tutorial was much more helpful.
@TheSim00n
@TheSim00n 6 років тому
Awesome video as always Yan. I know for the general use of virtual functions this video is absolutely enough, but I would love to see an explanation of how early and late binding comes into play with these functions and the concept of a vtable. Thanks!
@TheCherno
@TheCherno 6 років тому
Yes, that will be covered in the vtable video. Late binding doesn't _really_ exist in C++ since everything must be known at compile time, and the vtable essentially just allows dispatching to a number of preset values (that are contained in the table), not to _anything_ which would be the case with late binding.
@TheSim00n
@TheSim00n 6 років тому
Right on. Thanks.
@impe001
@impe001 4 роки тому
u save me dude thank you so much !!!!!!!
@zaitmartinez5502
@zaitmartinez5502 2 роки тому
Great video!
@LokeshKumar-os6ux
@LokeshKumar-os6ux 4 роки тому
you are genius
@LunaFlahy
@LunaFlahy Рік тому
1. Virtual function: declared in the base class, which enables the derived object to use its override function. 2. Override: declared after the function in the derived class. not required, but avoid misspelling the function name or overriding the non-virtual function in the base class. 3.V Table : stores the virtual function in the base class to dispatch, which cost space, int * pointer to the override function. 4. in specific embedded systems, using v table might impact the performance .
@immalkah
@immalkah Рік тому
Rewording content in summary form is actually a great way to learn and reinforce knowledge 👍🏽
@ProtonPhoenix
@ProtonPhoenix 3 роки тому
-> in c++ ~~~ An operator in C/C++ allows to access elements in Structures and Unions. It is with a pointer variable pointing to a structure or union. The operator is formed by using a minus sign, followed by the geater than symbol as shown below but bro we didn't reach union yet
@laureven
@laureven 5 років тому
If I was new to this I would have struggled to understand. Your explanation is very good but it is impossible to pause the video to see all code to be able to imagine this scenario. It would be nice to have this simple code all on the screen and then You explaining it. In Your video, You jumping between screens and this create a lot of confusion for all newbies I imagine. Maybe a smaller font :) ..the point is If I explaining this to anybody I Print the example code on a single page and then explain, If I jump pages from declarations to the main function this is very confusing ...but this is just me ...Anyway I like Your videos Regardless :) Regards
@zaid4708
@zaid4708 4 роки тому
ikr its confusing where he keeps on jumping everywhere i cant keep up
@froycardenas
@froycardenas 4 роки тому
Certainly, this is not a topic for a newbie... virtual function is a complex feature of class heritance that I don't think there is an easy way to explain to people who have never coded anything in their life. This guy is obviously an expert and knows what he is talking about because he must have been programming for years.
@ashwinregi9215
@ashwinregi9215 3 роки тому
That's true! I kept on pausing the screen to get it
@TheIsWorld
@TheIsWorld 4 роки тому
Türkçe altyazı ekleyenin eline sağlık. Thanks to the contributor for the Turkish subtitles.
@WindPortal
@WindPortal 4 роки тому
Okay Cherno... we get it... we are dumb. You happy now? Guess I'll just have to watch more of your videos to understand these unexplained concepts, which I was going to anyways because you're the best teacher ever. :D
@danielketcheson1965
@danielketcheson1965 Рік тому
This series Applies in 2022 Meets the standards for my school's conventions (industry standards) Is more articulate and understandable than the "C++ For Dummies" series Has a loving/lovable character directing it I (with next to no rep or qualifications) award the Cherno with best C++'s best resource award I said it here Now I'm going to say it everywhere else.
@mateusz-czajkowski
@mateusz-czajkowski 3 роки тому
2:39 that resignation in his voice lmao
@Joshua-gu5nj
@Joshua-gu5nj 5 років тому
Your hair reminds me of that scene in There's Something About Mary. You know which one.
@phantomstriker7996
@phantomstriker7996 Рік тому
Virtual functions are basically backups for functions. So it tells the complier that if a function is overwritten then it knows that it originally meant.
@alexanderfitterling
@alexanderfitterling 3 роки тому
pretty cool! ... well explained.
@morball6668
@morball6668 2 роки тому
amazing
@TheSunscratch
@TheSunscratch 6 років тому
What is the difference between Player(const std::string& name):m_name(name) {} and Player(const std::string& name) { m_name = name; } Is it some kind of syntactic sugar?
@TheSunscratch
@TheSunscratch 6 років тому
Lightslinger Deadeye many thanks for your explanation!
@TheCherno
@TheCherno 6 років тому
There's no _real_ practical difference between the two, however there is a difference. Since m_Name is a class member which has the type std::string (which is stack-allocated), it will actually be instantiated twice in your second example (firstly with an empty string, and secondly copied from the name parameter), but only once in your first example (via the constructor's intiailiser). Definitely going to be a video on this in the future. :)
@TheSunscratch
@TheSunscratch 6 років тому
TheChernoProject thanks :)
@BlackPhillip-sw8xf
@BlackPhillip-sw8xf 6 років тому
+TheSunscratch Also you cannot use the first approach if the data member is static.
@matteocampo1732
@matteocampo1732 6 років тому
Does the compiler (with -O2 or -O3 ) optimize it so that there is no difference eventually?
@dafid
@dafid 4 роки тому
Congrats, fellow hacker, i recognise you as one of them 'Non-pasters', have a nice journey hooking them VMT-s!
@sameeranjoshi3819
@sameeranjoshi3819 3 роки тому
@The Cherno when you say some people don't prefer virtual functions, what's the other option in that case? Is it CRTP ? Do you have a video on what to use if no virtual function?
@lesptitsoiseaux
@lesptitsoiseaux 3 роки тому
I can't say how useful your series has been. My son is twelve and is into robotics and programming and switching from python to C++. He loves your series and I'm playing catchup to help him though I'm the one lagging behind. Thank you, and let me know, if you read this, if you ever considered doing something about OpenCV or anything machine learning? :-D
@shirinkoul
@shirinkoul 2 роки тому
I enjoyed the video :)
@whytushar
@whytushar 3 роки тому
This is amazing, first time watching one of your videos and I'm in for more! Thanks!
@song5030
@song5030 6 років тому
Hey Cherno! Are these tutorials going to be by the C++ 14 and up standart? I mean like will these tutorials be of modern C++?
@somedude4122
@somedude4122 6 років тому
Yup. Many of these will work on pre C++11, but most are C++24, especially the later videos, which are strictly C++14 and up
@krec348
@krec348 6 років тому
Thanks a lot for the video! :))
@Chillzn-yt
@Chillzn-yt 2 роки тому
Employer in the interview: "Where did you study?" Me: "The Cherno University..." Employer in the interview: "Where is that located?" Me: "UKposts..."
@aritzolea6554
@aritzolea6554 6 років тому
A very basic question (coming from java). Why do you write Entity* e = new Entity()? Why do you add that pointer * ?
@TheCherno
@TheCherno 6 років тому
Because the *new* keyword dynamically allocates memory and returns a pointer to the address of that allocated memory, hence why we need a pointer type. Check out my video on pointers if you haven't already, and I will definitely be making a video on memory allocation in the future.
@edino1981
@edino1981 6 років тому
I will just add that in Java classes are by default reference types, while in C++ everything is value type, so if you need to refere to the same value, then you need to use pointers. So you can use same class definition as reference or value type. For example if you have new class Vector (position) , and you pass it to function as Vector (by value) or as Vector * ( as pointer only). If you embed Vector in Entity you can embed entire Vector or only a pointer to Vector.
@othmaneparadis1576
@othmaneparadis1576 3 роки тому
guys this is the hardest in c++ so dont quit
@MohamedHaddi
@MohamedHaddi 2 роки тому
From the auto-generated English captions: "Hey what's up guys my name is HMO and welcome back to my syphilis gloss series!"
@SR-oy5ou
@SR-oy5ou 2 роки тому
you just summarized my 3 hours lecture in 5 minutes
@Bhargav2307
@Bhargav2307 4 роки тому
Hey Cherno, could you please make a video on the virtual table and stuff.
@bartlomiejodachowski
@bartlomiejodachowski 2 роки тому
1:10 why is m_Name, class variable, used after : and with () like a function ? is : part of labda" notation ? and () funcional" casting/asigment ?
@tjalferes
@tjalferes 2 роки тому
thanks
@immalkah
@immalkah Рік тому
Not sure if this will get seen this many years later, but I have a quick question. Does this mean that we should always define all of the functions in the base class as “virtual” as a rule of thumb? Thank you for the videos yan love your content
@loryon
@loryon 6 років тому
Thanks for this awesome video ! Will you do a DirectX tutorial in the future ?
@TheCherno
@TheCherno 6 років тому
Yes! Once we start the game engine series, we'll be implementing multiple graphics APIs.
@loryon
@loryon 6 років тому
+TheChernoProject Okay, glad to hear that !
@spwim
@spwim 4 роки тому
Slapping like on all the vids :-)
@rivershi8273
@rivershi8273 Рік тому
I have learned a lot from your videos. Can you create a tutorial on setting up C++ in Visual Studio Code? Visual Studio is still too heavy for me.
@naganrpin
@naganrpin 3 роки тому
Like the speed... Good.
@cap-advaith
@cap-advaith Рік тому
player(const std:string& name):m_name(name){} // this is an example of initializer list
@Dagrond
@Dagrond Рік тому
I was wondering why you used the x->object style instead of x.object but it turns out that x.object won't use a vTable. Baby steps for me I guess.
Interfaces in C++ (Pure Virtual Functions)
6:55
The Cherno
Переглядів 333 тис.
ДРУГА РЕПЕТИЦІЯ alyona alyona та Jerry Heil на сцені Євробачення-2024
00:34
Євробачення Україна | Eurovision Ukraine official
Переглядів 265 тис.
маленький брат прыгает в бассейн
00:15
GL Show Russian
Переглядів 2 млн
Function Pointers in C++
12:41
The Cherno
Переглядів 376 тис.
Dynamic Binding (Polymorphism) With The Virtual Keyword | C++ Tutorial
9:57
Portfolio Courses
Переглядів 7 тис.
C++ Polymorphism and Virtual Member Functions [6]
12:13
Professor Hank Stalica
Переглядів 7 тис.
Arrays in C++
18:31
The Cherno
Переглядів 409 тис.
Virtual Functions & Abstract Classes in C++ | C++ Programming Tutorials
15:12
How C++ Works
20:21
The Cherno
Переглядів 1 млн
C++ Programming Tutorial 99 - Polymorphism
7:21
Caleb Curry
Переглядів 30 тис.
ДРУГА РЕПЕТИЦІЯ alyona alyona та Jerry Heil на сцені Євробачення-2024
00:34
Євробачення Україна | Eurovision Ukraine official
Переглядів 265 тис.