Heim >Backend-Entwicklung >C++ >Können wir die C-Standardbibliothek durch Vererbung erweitern?

Können wir die C-Standardbibliothek durch Vererbung erweitern?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-05 05:07:02232Durchsuche

Can We Extend the C   Standard Library Through Inheritance?

Erweitern der C-Standardbibliothek durch Vererbung

Die allgemeine Auffassung ist, dass die C-Standardbibliothek nicht dazu gedacht ist, durch Vererbung erweitert zu werden. Die Existenz von std::Exception stellt diese Annahme jedoch in Frage. Daher stellen sich folgende Fragen:

Können Standardbibliotheksklassen durch Vererbung erweitert werden?

Abgesehen von std::Exception ist nicht klar, welche anderen Standardbibliotheksklassen es gibt sind zur Vererbung bestimmt. Ein praktischer Ansatz zur Ermittlung geeigneter Kandidaten ist wie folgt:

  • Prüfung auf virtuelle Methoden:Klassen mit virtuellen Methoden sind potenzielle Kandidaten für Basisklassen.
  • Vermeiden Sie Klassen mit Friend-Deklarationen: Kapselungsprobleme können die Vererbung problematisch machen.
  • Vorlagen in Betracht ziehen: Anpassung durch Spezialisierungen ist möglicherweise der Vererbung für Vorlagen vorzuziehen.
  • Seien Sie vorsichtig bei richtlinienbasierten Mechanismen: Diese Mechanismen legen nahe, dass eine Vererbung nicht ratsam ist.

Auswirkungen der Vererbung von Standardbibliotheksklassen

Beim Erben von einer Standardbibliotheksklasse wie std::Exception ist es fraglich, ob die Unterklasse der ursprünglichen Schnittstelle entsprechen muss. Das „Liskov-Substitutionsprinzip“ (LSP) schlägt jedoch vor, dass das Verhalten der Unterklasse für den Client mit dem der Basisklasse übereinstimmen sollte.

Daher gilt es als bewährte Vorgehensweise Stellen Sie sicher, dass die what()-Memberfunktion der Unterklasse einen Nicht-Null-Zeiger zurückgibt, auch wenn der Standard dies nicht explizit für Unterklassen von std::Exception verlangt.

Das obige ist der detaillierte Inhalt vonKönnen wir die C-Standardbibliothek durch Vererbung erweitern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn