


Die Beziehung zwischen Vererbungsmethoden und Zugriffsqualifizierern
Drei Vererbungsmethoden:
Öffentliche Vererbung
Private Vererbung
Geschützte Vererbung
Beziehung: Wenn die Mitgliedsfunktion der Basisklasse privat ist, werden die privaten Mitglieder der abgeleiteten Klasse zur Basisklassen sind unsichtbar, andere Kriterien sind auf einen kleinen Auswahlbereich für den endgültigen Zugriff beschränkt.
Qualifikationsmerkmal für geschützte Mitglieder: Auf einige Basisklassenmitglieder soll nicht direkt von Objekten der Basisklasse zugegriffen werden, sondern es muss in der abgeleiteten Klasse darauf zugegriffen werden. Sie werden als geschützte Mitglieder definiert. Qualifizierer für geschützte Mitglieder entstehen durch Vererbung.
Verstecken verstehen
Ausblenden bedeutet, dass die Funktion der abgeleiteten Klasse die Basisklassenfunktion mit demselben Namen blockiert. Die Regeln lauten wie folgt:
Wenn die Funktion der abgeleiteten Klasse denselben Namen wie die Funktion der Basisklasse hat, die Parameter jedoch unterschiedlich sind, ist die Funktion zu diesem Zeitpunkt die Die Basisklasse wird unabhängig vom Schlüsselwort virtual ausgeblendet.
Wenn die abgeleitete Klassenfunktion denselben Namen wie die Basisklassenfunktion hat und die Parameter dieselben sind, die Basisklassenfunktion jedoch nicht über das virtuelle Schlüsselwort verfügt, dann wird die Basisklassenfunktion verwendet ist versteckt.
Standard-Memberfunktionen abgeleiteter Klassen
Wenn die sechs Standard-Memberfunktionen nicht explizit in der abgeleiteten Klasse definiert sind, synthetisiert das Kompilierungssystem diese sechs Memberfunktionen standardmäßig .
Konstruktor
Kopierkonstruktor
Destruktor
Zuweisungsoperator überlastet
Adressoperator überlastet
Const-modifizierter Adressoperator überlastet
#include<iostream> using namespace std; class person{ public: person(const char* name) :_name(name) { cout<<"person()"<<endl; } person(const person& p){ cout<<"person(const person& p)"<<endl; } person& operator=(const person& p){ cout<<"person& operator=(const person& p)"<<endl; if(this!=&p){ _name=p._name; } return *this; } ~person(){ cout<<"~person()"<<endl; } protected: string _name; }; class student:public person{ public: student(const char* name,int num) :person(name) ,_num(num){ cout<<"student()"<<endl; } student(const student& s) :person(s) ,_num(s._num) { cout<<"student(const student& s)"<<endl; } student& operator=(const student& s){ cout<<"student& operator=(const student& p)"<<endl; if(this!=&s){ person::operator=(s);//必须指定域,否则会死循环 _num=s._num; } return *this; } ~student(){//析构的时候先清理子类,再清理父类,不需要显示的调用 cout<<"~student()"<<endl; } private: int _num; }; int main(){ student s1("jack",18); student s2(s1); student s3("rose",16); s1=s3; }
Diamantvererbung
Diamantvererbung weist Mehrdeutigkeits- und Datenredundanzprobleme auf.
Zum Beispiel handelt es sich bei den vererbten Daten in der folgenden Abbildung um zwei Kopien, die jeweils unterschiedlich sind:
Lösung: virtuelle Vererbung
im Diamant Fügen Sie virtuell
zur zweiten Ebene hinzu. Beispiel:
Verwandte Artikel:
Zusammenstellung von C#-Grundkenntnissen: Grundkenntnisse (2) Klasse
Verwandte Videos:
Qianfeng C-Sprachgrundlagen Video Tutorial
Das obige ist der detaillierte Inhalt von[C++] Vertiefendes Verständnis der Grundkenntnisse der Vererbung und ihrer Beziehung zu Zugriffsqualifizierern. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

C# und .NET eignen sich für Web-, Desktop- und Mobile -Entwicklung. 1) In der Webentwicklung unterstützt ASP.NetCore die plattformübergreifende Entwicklung. 2) Die Desktop -Entwicklung verwendet WPF und Winforms, die für unterschiedliche Anforderungen geeignet sind. 3) Mobile Entwicklung realisiert plattformübergreifende Anwendungen über Xamarin.

Das C#.NET -Ökosystem bietet reichhaltige Frameworks und Bibliotheken, mit denen Entwickler Anwendungen effizient erstellen können. 1.asp.netcore wird verwendet, um Hochleistungs-Webanwendungen zu erstellen. Durch das Verständnis der Nutzung und Best Practices dieser Tools können Entwickler die Qualität und Leistung ihrer Anwendungen verbessern.

Wie bereitete ich eine C# .NET -App für Azure oder AWS bereit? Die Antwort ist, AzureAppservice und Awselasticbeanstalk zu verwenden. 1. Automatisieren Sie bei Azure die Bereitstellung mit AzureAppservice und AzurePipelines. 2. Verwenden Sie bei AWS Amazon ElasticbeanSpalk und AWSLambda, um Bereitstellungen und serverlosen Computer zu implementieren.

Die Kombination von C# und .NET bietet Entwicklern eine leistungsstarke Programmierumgebung. 1) C# unterstützt Polymorphismus und asynchrone Programmierung, 2) .NET bietet plattformübergreifende Funktionen und gleichzeitige Verarbeitungsmechanismen, wodurch sie in der Entwicklung von Desktop-, Web- und mobilen Anwendungen häufig verwendet werden.

.NetFramework ist ein Software -Framework, und C# ist eine Programmiersprache. 1..NetFramework bietet Bibliotheken und Dienste, die Desktop-, Web- und mobile Anwendungsentwicklung unterstützen. 2.C# ist für .Netframework entwickelt und unterstützt moderne Programmierfunktionen. 3..NETFRAMEWORK verwaltet die Codeausführung über CLR, und der C# Code wird in IL zusammengestellt und wird von CLR ausgeführt. V. 5. Zu den häufigen Fehlern zählen Typenkonvertierung und asynchrone Programmieradrocken. Visualstudio -Tools sind zum Debuggen erforderlich.

C# ist eine moderne, objektorientierte Programmiersprache, die von Microsoft entwickelt wurde, und .NET ist ein Entwicklungsrahmen von Microsoft. C# kombiniert die Leistung von C und die Einfachheit von Java und eignet sich zum Aufbau verschiedener Anwendungen. Das .NET -Framework unterstützt mehrere Sprachen, bietet Müllsammlungsmechanismen und vereinfacht die Speicherverwaltung.

C# und .NET-Laufzeit arbeiten eng zusammen, um Entwickler effiziente, leistungsstarke und plattformübergreifende Entwicklungsfähigkeiten zu befähigen. 1) C# ist eine vom Typ befindliche und objektorientierte Programmiersprache, die so konzipiert ist, dass sie nahtlos in das .NET-Framework integriert werden. 2) Die .NET-Laufzeit verwaltet die Ausführung von C# Code, bietet Müllsammlung, Type Sicherheit und andere Dienste und sorgt für einen effizienten und plattformübergreifenden Betrieb.

Um die C# .NET -Entwicklung zu starten, müssen Sie: 1. Verstehen Sie das Grundkenntnis von C# und die Kernkonzepte des .NET -Frameworks; 2. Meister Sie die grundlegenden Konzepte von Variablen, Datentypen, Kontrollstrukturen, Funktionen und Klassen; 3.. 4. Mit Debugging -Techniken und Leistungsoptimierungsmethoden für häufige Fehler vertraut sein. Mit diesen Schritten können Sie nach und nach in die Welt von C#.NET eindringen und effiziente Anwendungen schreiben.


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

SublimeText3 Englische Version
Empfohlen: Win-Version, unterstützt Code-Eingabeaufforderungen!

ZendStudio 13.5.1 Mac
Leistungsstarke integrierte PHP-Entwicklungsumgebung

MinGW – Minimalistisches GNU für Windows
Dieses Projekt wird derzeit auf osdn.net/projects/mingw migriert. Sie können uns dort weiterhin folgen. MinGW: Eine native Windows-Portierung der GNU Compiler Collection (GCC), frei verteilbare Importbibliotheken und Header-Dateien zum Erstellen nativer Windows-Anwendungen, einschließlich Erweiterungen der MSVC-Laufzeit zur Unterstützung der C99-Funktionalität. Die gesamte MinGW-Software kann auf 64-Bit-Windows-Plattformen ausgeführt werden.

SAP NetWeaver Server-Adapter für Eclipse
Integrieren Sie Eclipse mit dem SAP NetWeaver-Anwendungsserver.

Herunterladen der Mac-Version des Atom-Editors
Der beliebteste Open-Source-Editor
