Does C Have a Virtual Constructor?
Unlike other languages, C does not provide a virtual constructor. This has raised the question: why not?
Answer from the Creator Himself
Bjarne Stroustrup, the father of C , offers an insightful explanation:
"A virtual call is a mechanism to get work done given partial information. [...] To create an object you need complete information. [...] Consequently, a call to a constructor cannot be virtual."
Understanding the Concept
In essence, virtual functions allow for dynamic binding, enabling code to interact with objects of different types without knowing their exact classes. However, the creation of an object requires precise information about the type to be instantiated, making a virtual constructor a conceptual impossibility.
Alternative Approaches
Despite the absence of a virtual constructor, C provides alternative approaches to achieve similar functionality. The FAQ entry by Stroustrup provides code for such a solution, demonstrating how to accomplish the desired behavior without a virtual constructor.
The above is the detailed content of Why Doesn't C Have a Virtual Constructor?. For more information, please follow other related articles on the PHP Chinese website!