Erweiterung der C-Standardbibliothek durch Vererbung
Die C-Standardbibliothek, die weithin als unzugängliche Bastion für Vererbung angesehen wird, täuscht über eine versteckte Ausnahme hinweg seine Reihen. Die Klasse std::Exception steht allein als einzige Entität zur Verfügung, die explizit für die Erweiterung entwickelt wurde. Dies wirft die Frage auf:
Können andere Standardbibliotheksklassen erweitert werden?
Obwohl es keine endgültige Liste gibt, hängt die Antwort von der Entschlüsselung der Absicht des Standards ab. Ein pragmatischer Ansatz beinhaltet die Prüfung der folgenden Kriterien:
Implikationen der Vererbung von Standardbibliotheksklassen
Die Erweiterung von std::Exception hebt ein weiteres Problem hervor:
Einhaltung der Schnittstellenerwartungen
Beim Erben von a Standardbibliotheksklasse, die geerbte Schnittstelle muss respektiert werden. Beispielsweise würde eine Unterklasse, die die Memberfunktion what() so ändert, dass sie einen Nullzeiger anstelle einer gültigen Beschreibung zurückgibt, die im ISO-Standard angegebene Schnittstelle verletzen. Obwohl es sich nicht unbedingt um ein Problem der Standardkonformität handelt, beeinträchtigt es die Korrektheit und untergräbt das Prinzip der Ersetzbarkeit für Basisklassen.
Das obige ist der detaillierte Inhalt vonKönnen Sie andere Klassen in der C-Standardbibliothek über „std::Exception' hinaus erweitern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!