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!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

What are the types of values returned by c language functions? What determines the return value?

C language function format letter case conversion steps

What are the definitions and calling rules of c language functions and what are the

Where is the return value of the c language function stored in memory?

How does the C Standard Template Library (STL) work?

How do I use algorithms from the STL (sort, find, transform, etc.) efficiently?
