Wikipedia has an article on virtual methods, containing an example in several languages. On the right you can see the C++ version. The purpose of the code (from Wikipedia): A base class This allows a programmer to process a list of objects of class CLASS Animal
PROC $eat() @default IO.print("I eat like a generic Animal.") } } CLASS Wolf EXTENDS Animal PROC $eat() @replace IO.print("I eat like a wolf!") } } CLASS Fish EXTENDS Animal PROC $eat() @replace @default IO.print("I eat like a fish!") } } CLASS GoldFish EXTENDS Fish @final PROC $eat() @replace IO.print("I eat like a goldfish!") } } CLASS OtherAnimal EXTENDS Animal } FUNC Main() int list<Animal> animals = NEW() animals.add(Animal.NEW()) animals.add(Wolf.NEW()) animals.add(Fish.NEW()) animals.add(GoldFish.NEW()) animals.add(OtherAnimal.NEW()) FOR a IN animals a.eat() } RETURN 0 } This is the output: I eat like a generic Animal. I eat like a wolf! I eat like a fish! I eat like a goldfish! I eat like a generic Animal. Notes:
| #include <iostream> |
Home >