Escolar Documentos
Profissional Documentos
Cultura Documentos
Purpose
Virtual classes solve the extensibility
problem of extending data abstraction
with new functions and representations.
Like virtual functions, virtual classes
follow the same rules of definition,
overriding, and reference.[2]
Example
For example, a base class Machine
could have a virtual class Parts .
Subclass Car would implement
Parts differently than the subclass
Bicycle , but the programmer can call
any methods in the virtual inner class
Parts on any class Machine object,
and get the Parts implementation of
that specific derived class.
#include <iostream>
class Machine {
public:
public
void run() { }
class Parts {
public:
public
virtual int
get_wheels() = 0;
virtual std::string
get_fuel_type() = 0;
};
};
std::string
get_fuel_type() override {
std::cout << "A
car uses gasoline for
fuel." << std::endl;
return
"gasoline";
}
};
};
See also
Inheritance
Superclass
Virtual inheritance
Virtual function
References
1. "Virtual Classes" . CaesarJ
Programming Guide. Technische
Universität Darmstadt. 2006-02-10.
Retrieved 2007-07-30.
2. "Overview of Virtual Classes" (PDF). A
Virtual Class Calculus. University of
Aarhus, Denmark. 2006. Retrieved
2014-04-30.
External links
Altherr, Philippe; Cremet, Vincent (2005).
"Inner Classes and Virtual Types" (PDF).
Ecole Polytechnique Fédérale de
Lausanne (EPFL) Switzerland. Retrieved
2014-04-30.
Ernst, Erik; Ostermann, Klaus; Cook,
William R. (2006). "A Virtual Class
Calculus" (PDF). University of Aarhus.
Retrieved 2007-07-30.
Retrieved from
"https://en.wikipedia.org/w/index.php?
title=Virtual_class&oldid=895489661"