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.
|
沒有留言:
張貼留言