Der Konstruktor kann keine virtuelle Funktion sein
Die Gründe, warum Konstruktoren nicht als virtuelle Funktionen deklariert werden können:
1. Die sogenannte virtuelle Funktion bedeutet, dass in polymorphen Situationen nur eine ausgeführt wird. Aus dem Konzept der Vererbung ist immer das übergeordnete Klassenobjekt Um ein Unterklassenobjekt zu erstellen, müssen Sie beim Erstellen des Konstruktors der übergeordneten Klasse den Konstruktor explizit aufrufen befinden sich in der Unterklasse Wenn Zhongyi versehentlich eine Funktion neu schreibt, die mit dem Konstruktor der übergeordneten Klasse übereinstimmt, wird Ihr übergeordneter Klassenkonstruktor überschrieben, dh die Konstruktion der übergeordneten Klasse kann nicht abgeschlossen werden und es tritt ein Fehler auf.
Klasse A
{
öffentlich :
virtuell A()
{
cout<<"A"<
>
};
Am Kompilierungspunkt wurde angezeigt, dass es nicht übergeben werden kann. Remove virtual
2. Die Hauptbedeutung virtueller Funktionen liegt in der abgeleiteten Klasse. Wenn der Konstruktor der abgeleiteten Klasse Parameter verwendet, fügt der Compiler den Code hinzu muss Parameter für die Basisklasse in ihrem Konstruktor bereitstellen, d Natürlich gibt es auch andere Erklärungen: 1. Aus Sicht des Speicherplatzes entspricht die virtuelle Funktion einer vtable, aber diese vtable wird tatsächlich im Speicherplatz des Objekts gespeichert. Wenn der Konstruktor virtuell ist, muss er über die vtable aufgerufen werden, das Objekt wurde jedoch nicht instanziiert, das heißt, es ist kein Speicherplatz vorhanden und die vtable kann nicht gefunden werden, sodass der Konstruktor kein virtueller Konstruktor sein kann Funktion.
2. Aus Sicht der Nutzung werden virtuelle Funktionen hauptsächlich verwendet, um den Aufruf überlasteter Funktionen bei unvollständigen Informationen zu ermöglichen. Der Konstruktor selbst dient dazu, die Instanz zu initialisieren. Die Verwendung virtueller Funktionen hat also keine Instanzbedeutung. Die erste Instanz wird nicht initialisiert. Wie kann sie also polymorph sein? Die Funktion einer virtuellen Funktion besteht darin, dass sie, wenn sie über einen Zeiger oder eine Referenz der übergeordneten Klasse aufgerufen wird, zur Mitgliedsfunktion werden kann, die die Unterklasse aufruft. Der Konstruktor wird automatisch aufgerufen, wenn ein Objekt erstellt wird, und kann nicht über einen Zeiger oder eine Referenz von der übergeordneten Klasse aufgerufen werden. Daher ist festgelegt, dass der Konstruktor keine virtuelle Funktion sein darf.

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

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Ganz gleich, ob Sie Anfänger oder erfahrener Profi sind: Die Beherrschung von C# ebnet den Weg für Ihre Karriere.

Die Entwicklung von Technologien der künstlichen Intelligenz (KI) ist heute in vollem Gange und sie haben in verschiedenen Bereichen großes Potenzial und Einfluss gezeigt. Heute wird Dayao Ihnen 4 .NET Open-Source-KI-Modell-LLM-bezogene Projekt-Frameworks vorstellen und hofft, Ihnen einige Referenzen zu geben. https://github.com/YSGStudyHards/DotNetGuide/blob/main/docs/DotNet/DotNetProjectPicks.mdSemanticKernelSemanticKernel ist ein Open-Source-Softwareentwicklungskit (SDK), das für die Integration großer Sprachmodelle (LLM) wie OpenAI und Azure entwickelt wurde

Wenn Sie ein .NET-Entwickler sind, müssen Sie sich der Bedeutung der Optimierung von Funktionalität und Leistung bei der Bereitstellung hochwertiger Software bewusst sein. Durch den fachgerechten Einsatz der bereitgestellten Ressourcen und die Verkürzung der Ladezeiten der Website schaffen Sie nicht nur ein angenehmes Erlebnis für Ihre Nutzer, sondern senken auch die Infrastrukturkosten.

In Bezug auf die Verarbeitung von Anforderungen mit hoher Parallelität bietet .NETASP.NETCoreWebAPI eine bessere Leistung als JavaSpringMVC. Zu den Gründen gehören: AOT-Frühkompilierung, die die Startzeit verkürzt, wobei Entwickler für die Zuweisung und Freigabe von Objektspeicher verantwortlich sind.

C#.NET -Interviewfragen und Antworten umfassen Grundkenntnisse, Kernkonzepte und erweiterte Nutzung. 1) Grundkenntnisse: C# ist eine von Microsoft entwickelte objektorientierte Sprache und wird hauptsächlich im .NET-Framework verwendet. 2) Kernkonzepte: Delegation und Ereignisse ermöglichen dynamische Bindungsmethoden, und LINQ bietet leistungsstarke Abfragefunktionen. 3) Erweiterte Verwendung: Asynchrone Programmierung verbessert die Reaktionsfähigkeit und Expressionsbäume werden für die dynamische Codekonstruktion verwendet.

Das Interview mit C# Senior Developer erfordert das Mastering von Kernwissen wie asynchrones Programmieren, LINQ und interne Arbeitsprinzipien von .NET -Frameworks. 1. Asynchrones Programmieren vereinfacht die Operationen durch Async und wartet auf die Verbesserung der Anwendungsreaktionsfähigkeit. 2.LinQ betreibt Daten im SQL -Stil und achtet auf die Leistung. 3. Die CLR des Net -Frameworks verwaltet den Speicher, und die Müllsammlung muss mit Vorsicht verwendet werden.

C# ist eine moderne, objektorientierte Programmiersprache, die von Microsoft und als Teil des .NET-Frameworks entwickelt wurde. 1.C# unterstützt die objektorientierte Programmierung (OOP), einschließlich Einkapselung, Vererbung und Polymorphismus. 2. Asynchrones Programmieren in C# wird über Async implementiert und wartet auf Schlüsselwörter, um die Reaktionsfähigkeit der Anwendungen zu verbessern. 3.. Verwenden Sie LINQ, um Datensammlungen präzise zu verarbeiten. 4. Häufige Fehler umfassen Null-Referenzausnahmen und Indexausnahmen außerhalb des Bereichs. Zu den Debugging -Fähigkeiten gehört die Verwendung eines Debuggers und Ausnahmeberechnung. 5. Leistungsoptimierung umfasst die Verwendung von StringBuilder und das Vermeiden von unnötigem Packung und Unboxing.

C#.NETisversatileforbothwebanddesktopdevelopment.1)Forweb,useASP.NETfordynamicapplications.2)Fordesktop,employWindowsFormsorWPFforrichinterfaces.3)UseXamarinforcross-platformdevelopment,enablingcodesharingacrossWindows,macOS,Linux,andmobiledevices.
