Extending the Standard Library through Inheritance
The belief that the C standard library is generally not intended to be extended through inheritance has been widely held. However, upon closer examination, it becomes apparent that certain aspects of the library were indeed designed for this purpose.
Intended Extension Points in the Standard Library
One such component is the std::exception class. It is explicitly intended to be inherited from, allowing for the creation of custom exception types. When doing so, certain guidelines should be considered:
Interface Adherence When Extending
As a best practice, when inheriting from standard library classes, it is important to adhere to the interface defined in the ISO Standard. This means that, for instance, an inherited exception class's what() member function should return a narrow-text string (NTBS), ensuring compatibility with functions expecting a std::exception. While a program using an exception class with a non-standard-conforming what() function may technically still compile, it deviates from the intended purpose and introduces potential compatibility issues.
The above is the detailed content of Can the C Standard Library Be Extended Through Inheritance?. For more information, please follow other related articles on the PHP Chinese website!