Home > Backend Development > C++ > Why Doesn't C Have a Virtual Constructor?

Why Doesn't C Have a Virtual Constructor?

Mary-Kate Olsen
Release: 2024-11-18 07:23:02
Original
919 people have browsed it

Why Doesn't C   Have a Virtual Constructor?

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!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template