📚 Learn how to solve problems and build projects with these Free E-Books ⬇️ C++ Lambdas e-book - free download here: bit.ly/freeCppE-Book Entire Object-Pascal step-by-step guide - free download here: bit.ly/FreeObjectPascalEbook 🚀📈💻🔥 My Practical Programming Course: www.codebeautyacademy.com/ Experience the power of practical learning, gain career-ready skills, and start building real applications! This is a step-by-step course designed to take you from beginner to expert in no time! 💰 Here is a coupon to save 10% on your first payment (CODEBEAUTY_YT10). Use it quickly, because it will be available for a limited time.
Hi saldina, can you please share the code in your pinned comment as a github link or as a txt message it really helps before the evalution. Thank you for lessons.
Hi Saldina, Thank you for spending your time creating video about C++. I'm not a CS student and not really good at programming but you help me pass C++ class. Now I also start to get interested to programming. I feel blessed that I found your channel, so please keep making videos like this:))
I had a friend from Celic in Bosnia. You remind me of her. She is a teacher and you both have same personality. Maybe all Bosnian have same charming personality. Anyway your lessons on C++ are great for beginners.
Thank you very much Saldina. The handing of these exceptions is indeed very very VERY useful and I am truly happy that I have learned so much about this topic. Greetings from Brazil!!!!!!!!!
Saldina I don't know how you get the time to do all these videos but thank you so much for all the help you have given me I am loving programming thanks to your channel. I think a great video you can do would be building a project like one that uses a user made form and a database etc. Any sort of real world application that one would be expected to make when in the field would be awesome!!!! Again thank you so much for your incredible help in sharing your knowledge. I once read a post from a wise person he said that knowledge becomes wealth if it is shared freely but it becomes a weapon when it is kept by selfish people. Thank you for spreading your riches and bettering humanity!!!
This channel is very perfect for learning C++ in an organic and simple way. she is teaching in very simple method spacially thanks, Mam for providing very helpful knowledge
Hi Saldina, Thanks a lot for your effort in teaching C++. In this example, we can add one more print and demonstrate that fourth print will not get executed when third print got an exception.
Hey Saldina! I would really appreciate if you can make a detailed video on Operator Overloading including topics such as Fundamentals of Operator Overloading, Restrictions on Operators Overloading, Operator Functions as Class Members vs. as Friend Functions, Overloading Unary Operators, Overloading Binary Operators, Overloading of operators using friend functions. Thanks!
unbelievable good, better than the book that divides a number by zero to get a throw, try, catch error. In the class chapter of the book, the example list class listing of a program and when it runs it goes "Woof, woof I am a two year old dog and I can wag my tail" and I think, "WHAT !!??, I could have written a program in BASIC to do the same thing."
if you like my teaching check my Practical Programming Course at www.codebeautyacademy.com We are building real desktop application in C# and you will be learning alongside other students, with me as your personal tutor. With this you will also gain access to exclusive Discord community. I'll be happy to have you there. :)
LOVEEE this video explaining everything I need in detail!! Also love the summary part, it goes through everything again and makes the concept more solid!! thank you so much!
What I like about his videos is the pace and efficiency of what he explains. A discovery this channel!! It would be nice if you shared the code, although it is true that doing it by hand helps to understand it better.
One of the important topics in C++, especially when using the STL as almost all of its functions will throw exceptions as soon as they encounter errors.
Thank you for your lessons, Saldina. You have clear English pronunciation, I like it. My English isn't so good, may be pre-intermediate level, but I understand you. Aside from programming I will study English listening with your lessons :) With love from Russia
Ciao Saldina, really good explanation about exceptions. I've also appreciated your slow speak, cause in this way every single words is recognizable and it's possible to totally absorb the meaning of the lesson.
Thank you for the video, I've learned exception handling already, but I always watch your videos in case I missed something when I first learned it, or you give a better explanation.
I summerize a point which may be easily overlooked: in 12:39 you must use "a pointer" as the parameter , so if you throw a "string type var" , you use the const char * ,because we need a pointer,however,"string" doesn't have pointer and "char" do.And string is actually a "char"
You are a perfect detail in this world :D keep going, as a nonnative English speaker I found your speaking is very simple but at the same time understandable perfectly :D
One problem with most of your tutorials, including this one, is that you should also point out flaws in your example code. The biggest flaw and easiest to explain is that in your example code, you should be passing the strings as const references instead of passing them in by value which causes huge performance problems due to all the unneeded string copies. For example your ctor should have const string &name instead of just 'string name' (bad performance hit). Same with print. and since you aren't modifying the strings passed in, make them const. Doing this will help create less newbies running around creating bad code. There are many other improvements that would make your code better and production quality, but in a beginner tutorial that is not a good idea - but using references instead of by value when possible is something a newbie should learn day one.
That's exactly what I was thinking too. Passing a very large document by value will use up stack space so best pass a pointer or reference to the string document which is really passing an address to the document string. 👍
Very good concise introduction. Small point: there's a bug. Documents shorter than 10 characters will print without reducing the amount of available paper.
I subscribed your channel because you explain so many c++ functions that i have never learned in my study! Also its very easy for me to understand everything because your english is so fluent! :-) It would be interresting, if it's possible to put parameters into default catch functions instead of these "...". Thank you very much! Love from Germany!
Another VERY important thing to teach newbies about exceptions, DO NOT USE THEM TO REPLACE REGULAR ERROR HANDLING!!!!!!!!!!!!!!!!!!!!!!!!!!! Exceptions have overhead due to stack unwinding and other things, they are NOT meant to replace errors such as running out of printer paper, you should return errors (int or a bool for example) to indicate failed status. An exception would be an I/O error with the printer, that should be an exception of course, but not running out of paper or ink. If I was reading a file, a READ ERROR would be an exception, but if they format of the data we read is not as expected (for example you are trying to read a JPEG file and it isn't JPEG format) this is NOT an exception, it should be handled as an error. I emphasize this because exception handing gets a bad reputation for performance, and that is only because numbskulls are using it as a replacement for error handing which is bad. An EXCEPTION is something that is out of the users control. A good used for exceptions is lets say you are reading a structured file format and need to read ints, shorts, chars, etc. Instead of checking each read, put them in a try block and catch them. This can actually boost performance because instead of checking lets say 5 I/O calls, you can do no tests and handle the exception. For example: try { read a short read a char read a long read a short read a char } catch(...) { } if the short/char/long or whatever is NOT the format you expected return an error code indicating that the file is not the correct format. That generates much tigher code than: read a short if the read failed, return an error read a char if the read failed, return an error etc... See we have all the silly IF statements. That creates code that is not cache friendly and has overhead. But in the try/catch, it generates code with less overhead. If we end up in the catch block, we know that either the file is not what we expected or there was an I/O failure, so we cleanup and close the file, then return an error. If we did not get an exception, we examine the values we read to determine if for example it was a JPEG, if it is, then we continue to read the data now that the header is processed. That is a more professional (and faster/optimized code) than simply treating exception handing as a replacement for error such as "Not a JPEG", exceptions should be EXCEPTIONAL conditions. ANOTHER VERY IMPORTANT THING: NEVER throw any exceptions from a destructor for example. Speaking of IO, by default things such as streams and such throw by default, fclose() can also throw (failed to write out buffers), so be very careful in destructors. You can disable throwing with I/O if you want to handle the errors manually. Bottom line: This is C++, not some high level python code where you simply write trash code and ignore errors (ever wonder why many apps/games just crash? that is why, it was made by an amateur or lazy programmer. C++ code is very fast and optimal if used correctly, and if used correctly exception handling can actually improve your code (just as I showed by eliminating a bunch of branches that create cache unfriendly code), but it is NOT meant to replace general error handling.
In my C / C++ classes as a student, I did a sort numbers into order using what I just leaned on "recursion function" without using a temp int., when it goes through the list and does not do a swap, it breaks out the calling itself cycle. Post school days maybe I could have tried classes to do, Ascending, Descending order, and maybe to really tax the brain, the same order of the telephone book (but with numbers not character string the book uses), that would in a order like 1, 10 150, 23 230, 3, ...............up to 9??? order. Then someone from a C / C++ email group said, try this out x^= y^= x^ = y^ = x ( ^ is exclusive or ) that does not need a temp int
@codebeauty I really like your way of explaining programming, approaches and the language C++ itself. Unfortunately this video is showing how exceptions should not be used. Well, I've seen this a lot, so I think it's a general problem. Why? Well it's called "exception" not "error code". If your virtual printer is running out of paper it's not exceptional behavior but normal behavior. It can happen. So we should treat it that way. So returning an error code or better a structured error is the better implementation. This way the caller can also react in a proper, "normal" way. IMHO, here is what Exceptions are for. A type should raise an exception if its methods are called in a way so that they cannot work properly. Means the requirements of the methods parameters are not met. For your example, if a caller is trying to use the Print-method and the txtDoc parameter is null, line 14 would automatically raise an exception. Why is that? Well since txtDoc is not instantiated, the length method cannot be called. The minimal requirements of the Print-method are not fulfilled. Well of course there is already an implicit exception which is thrown, but it's cryptic and the caller needs to know your code to understand that calling .length is failing because he is passing null to your method. With an explicit exception, means " if (string.IsNullOrWhiteSpace(txtDoc)) throw new ArgumentNullException("Null is not allowed."); " this is not the case. Your API is much more robust and understandable. Plus your implementation can be seen as a blackbox which is always good. Anyway, keep up your good work. 👍
I don't know whether you have already mentioned that in previous videos, but it would be worth to say, that integer division in C++ is always rounded down and because of that, in line where you calculate the required amount of paper, you should explicitly round the result up. BTW great video.