Why do we need virtual functions in C++?
1989 
 | 
I'm a C++ newbie myself, but here is how I understood not just what virtual functions are, but why they're required: 
Let's say you have these two classes: 
In your main function: 
So far so good, right? Animals eat generic food, cats eat rats, all without  
virtual.
Let's change it a little now so that  
eat() is called via an intermediate function (a trivial function just for this example):
Now our main function is: 
Uh oh... we passed a Cat into  
func(), but it won't eat rats. Should you overload func() so it takes a Cat*? If you have to derive more animals from Animal they would all need their own func().
The solution is to make  
eat() from the Animal class a virtual function:
Main: 
Done. 
 | 
沒有留言:
張貼留言