Was ist ein Handle in C ++?
Mir wurde gesagt, dass ein handle ist eine Art Zeiger, aber nicht, und dass es ermöglicht es Ihnen, halten eine Referenz auf ein Objekt, sondern das Objekt selbst. Was ist eine ausführlichere Erklärung?
InformationsquelleAutor der Frage Xenoprimate | 2009-08-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einem Griff kann alles sein, von einem integer-index, einen Zeiger auf eine Ressource im kernel-space. Die Idee ist, dass Sie eine Abstraktion einer Ressource, so dass Sie don ' T müssen wissen viel über die Ressource selbst zu nutzen.
Zum Beispiel die HWND-Eigenschaft in der Win32-API ist ein handle für ein Fenster. Von selbst es ist sinnlos: Sie können nicht Lesen keine Informationen aus. Aber es passieren die richtigen API-Funktionen, und Sie können eine fülle von verschiedenen tricks mit ihm. Intern kann man sich den HWND-Eigenschaft als nur ein index in der GUI - Tabelle von windows (was nicht unbedingt sein, wie es implementiert ist, aber es macht die Magie auch sinnvoll sind).
EDIT: Nicht 100% sicher, was genau Sie Fragen in Ihrer Frage. Dies ist vor allem das reden über reines C/C++.
InformationsquelleAutor der Antwort Matthew Iselin
Ein handle ist ein Zeiger oder index mit keine sichtbaren Typ attached to it. Normalerweise sehen Sie so etwas wie:
Also in Ihrem code, den Sie einfach weitergeben BEHANDELN, um einer undurchsichtigen Wert.
Im code, wird das-Objekt verwendet, wirft Sie den Mauszeiger, um die Reale Struktur geben und nutzt es:
Oder er verwendet es als index für ein array/Vektor:
InformationsquelleAutor der Antwort jmucchiello
Griff ist eine Art Zeiger, dass es in der Regel einen Weg, der Verweis auf eine Entität.
Wäre es genauer, zu sagen, dass ein Zeiger ist eine Art von Griff, aber nicht alle handles sind Pointer.
Beispielsweise ein Griff kann auch einen index in eine Tabelle im Arbeitsspeicher, das entspricht einem Eintrag, der sich selbst enthält einen Zeiger auf ein Objekt.
Der Schlüssel ist, dass, wenn Sie einen "Griff", die Sie weder kennen noch kümmern, wie, die Griff eigentlich endet die Identifizierung der Sache, dass es erkennt, alles, was Sie wissen müssen ist, dass es funktioniert.
Es sollte ebenfalls offensichtlich sein, dass es keine einfache Antwort auf die Frage "was genau ist ein Griff", da Griffen Sie zu anderen Sachen, sogar im gleichen system implementiert werden können in unterschiedlicher Weise "unter der Haube". Aber Sie sollten nicht besorgt sein müssen, mit diesen unterschieden.
InformationsquelleAutor der Antwort Deltics
In C++/CLI, ein handle ist ein Zeiger auf ein Objekt befindet sich auf der GC-heap. Erstellen Sie ein Objekt auf den (unmanaged) C++ - heap wird erreicht, indem
new
und das Ergebnis einernew
Ausdruck einer "normalen" Zeiger. Ein verwaltetes Objekt zugewiesen ist, auf der GC (managed) heap mit einergcnew
Ausdruck. Das Ergebnis wird ein handle. Sie können nicht tun, Zeiger-Arithmetik auf den Griffen. Sie nicht kostenlos behandelt. Die GC wird sich um Sie kümmern. Auch die GC ist kostenlos zu verlagern Objekte auf dem verwalteten heap und aktualisieren Sie die Griffe auf die neuen Standorte, während das Programm ausgeführt wird.InformationsquelleAutor der Antwort Mehrdad Afshari
Diese wird im Rahmen der Handle-Body-Idiomauch genannt Pimpl-idiom. Es erlaubt das halten der ABI (binary interface) der Bibliothek auf die gleiche Weise, indem Sie die tatsächlichen Daten in ein anderes Objekt der Klasse, die lediglich verwiesen wird, die durch einen Zeiger statt in einem "Griff" - Objekt, bestehend aus Funktionen, die Stellvertretung, die Klasse "Body".
Es ist auch nützlich, um ermöglichen eine Konstante Zeit-und exception-safe-swap von zwei Objekten. Für dieses, lediglich der Zeiger auf das body-Objekt muss getauscht werden.
InformationsquelleAutor der Antwort Johannes Schaub - litb
GRIFF ist ein typefed definiert ist, die in winnt.h-Datei in visual studio (windows).
ich.c:
typedef void *HANDLE;
Lesen Sie mehr über GRIFF
InformationsquelleAutor der Antwort Kulamani
Einem Griff ist alles, was Sie wollen, es zu sein.
Einem Handgriff können Sie eine ganze Zahl ohne Vorzeichen, die in manchen lookup-Tabelle.
Einem Griff kann ein Zeiger auf, oder in, einer größeren Anzahl von Daten.
Es hängt davon ab, wie der code, der verwendet das handle verhält. Bestimmt den Typ zu behandeln.
Den Grund, den Begriff " Griff' verwendet wird, ist das, was wichtig ist. Das zeigt Ihnen, wie eine Identifikations-oder access-Objekttyp. Bedeutung für den programmer, stellen Sie ein 'Schlüssel' oder Zugang zu etwas.
InformationsquelleAutor der Antwort dyasta