This was such a boon to find. I've been lurking for a while since starting school for computer science. You've really been a help, thanks for explaining so many topics!
Would you only need to apply the virtual keyword to the base class member function? Or are there cases in which you would need to apply it to derived class member functions?
Thanks! I thought that polymorphism just meant that the derived class could be used to access member functions and variables of the parent class. So, in our array with student object pointers, when we create space for medical student object instances, is space for all the member variables of medical student allocated or just the name variable? Thanks! Also, if a function returns a reference to something like "&int add()", just returning an int in the actual function's code is enough right? The compiler will convert the returned int to an int reference, right?
Space for all the member variables will be allocated. If you try returning a constant int like '5' from a function "int& add()" then it should produce an error.
That's a really good question Akash but the answer may be a bit long for a commnet. Some of these answers here explain why polymorphism works with pointers/references: stackoverflow.com/questions/15188894/why-doesnt-polymorphism-work-without-pointers-references. :-)
if I have a chain of drive class like a semi-diamond and the very bottom class has the base class 3 times do I have to use virtual in all the drived class?
My understanding is that in the derived classes, the member functions will be virtual whether we use virtual or not because they are virtual in the base class: stackoverflow.com/questions/58042421/c-multi-level-inheritance-with-virtual-functions.
@@PortfolioCourses I was not taking about that , I meant ambiguity problem. #include using namespace std; template class sim_calculator { public: T x, y; void get() { cout > x >> y; } void calculate() { cout
So basically what the virtual keyword does is override the default behavior of a base class function so when polymorphism is in place child clases use their own versions?
Yes, that's basically the idea. The virtual keyword allows derived classes to override the behaviour of the virtual base class method to achieve dynamic aka "runtime" polymorphism. :-)
This is the best video on static and dynamic polymorphism I have seen among here on YT
This was such a boon to find. I've been lurking for a while since starting school for computer science. You've really been a help, thanks for explaining so many topics!
You're welcome, I'm really glad to hear the videos have been helpful! :-)
Your videos on OOP topics help me a lot.
I'm very glad to hear that they help you Mohit, thank you for sharing that! :-D
very impressive!🥰
Would you only need to apply the virtual keyword to the base class member function? Or are there cases in which you would need to apply it to derived class member functions?
Thanks! I thought that polymorphism just meant that the derived class could be used to access member functions and variables of the parent class. So, in our array with student object pointers, when we create space for medical student object instances, is space for all the member variables of medical student allocated or just the name variable? Thanks! Also, if a function returns a reference to something like "&int add()", just returning an int in the actual function's code is enough right? The compiler will convert the returned int to an int reference, right?
Space for all the member variables will be allocated. If you try returning a constant int like '5' from a function "int& add()" then it should produce an error.
why polymorphism does not work if I make the array on the stack instead of on the heap?
That's a really good question Akash but the answer may be a bit long for a commnet. Some of these answers here explain why polymorphism works with pointers/references: stackoverflow.com/questions/15188894/why-doesnt-polymorphism-work-without-pointers-references. :-)
@@PortfolioCourses I'm still not fully clear, I would be grateful if you made a video to clarify this topic
@@shafayet0198 Maybe one day I can do that! 🙂
if I have a chain of drive class like a semi-diamond and the very bottom class has the base class 3 times do I have to use virtual in all the drived class?
My understanding is that in the derived classes, the member functions will be virtual whether we use virtual or not because they are virtual in the base class: stackoverflow.com/questions/58042421/c-multi-level-inheritance-with-virtual-functions.
@@PortfolioCourses I was not taking about that , I meant ambiguity problem.
#include
using namespace std;
template
class sim_calculator
{
public:
T x, y;
void get()
{
cout > x >> y;
}
void calculate()
{
cout
So basically what the virtual keyword does is override the default behavior of a base class function so when polymorphism is in place child clases use their own versions?
Yes, that's basically the idea. The virtual keyword allows derived classes to override the behaviour of the virtual base class method to achieve dynamic aka "runtime" polymorphism. :-)