Was ist der Unterschied zwischen: Handle, Pointer und Referenz
Wie funktioniert ein Griff-unterscheiden sich von einem Zeiger auf ein Objekt und auch, warum können wir nicht ein Verweis auf eine Referenz?
Was wäre ein Verweis auf eine Referenz zu tun?
Was ist der "Griff" im Kontext des cpp. Ich fand keine nützlichen link.
Hier ist, was ein handle ist @YS Bhai stackoverflow.com/questions/1303123/what-is-a-handle-in-c
Ich habe gerade festgestellt, dass ich nicht ankreuzen, hier eine Antwort erstellen. Ich habe viel gelernt von stack overflow. Vielen Dank Jungs 🙂
Was ist der "Griff" im Kontext des cpp. Ich fand keine nützlichen link.
Hier ist, was ein handle ist @YS Bhai stackoverflow.com/questions/1303123/what-is-a-handle-in-c
Ich habe gerade festgestellt, dass ich nicht ankreuzen, hier eine Antwort erstellen. Ich habe viel gelernt von stack overflow. Vielen Dank Jungs 🙂
InformationsquelleAutor quantum231 | 2012-10-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Griff ist in der Regel eine undurchsichtig Referenz auf ein Objekt. Die Art des Griffes ist nicht das element, auf das verwiesen wird. Betrachten Sie zum Beispiel eine Datei-Deskriptor zurückgegeben
open()
system nennen. Der Typ istint
aber es repräsentiert einen Eintrag in der geöffneten Dateien Tabelle. Die tatsächlichen Daten in der Tabelle gespeichert ist unabhängig von derint
zurückgegeben wurde durchopen()
Befreiung der Umsetzung von Pflege-Kompatibilität (d.h. die eigentliche Tabelle umgestaltet werden kann transparent ohne Beeinträchtigung der Benutzer-code. Griffe können nur verwendet werden, um Funktionen in der gleichen Bibliothek-Schnittstelle, kann die Belegung der Griff zurück auf das eigentliche Objekt.Einem Zeiger ist die Kombination aus einer Adresse im Speicher und den Typ des Objekts, das sich im Speicherbereich. Der Wert ist die Adresse, der Typ der Zeiger sagt dem compiler mit, welche Operationen können durchgeführt werden, durch, die Zeiger, wie Sie interpretieren die Position im Speicher. Zeiger sind transparent, dass das Objekt verwiesen wird, hat einen konkreten Typ, ist vom Zeiger. Beachten Sie, dass in einigen Fällen ein Zeiger kann dienen als ein handle (einen
void*
vollständig deckend ist, wird ein Zeiger auf eine leere interface ist genauso undurchsichtig).Verweise sind Aliase auf ein Objekt. Das ist, warum Sie nicht haben eine Referenz auf eine Referenz: Sie können mehrere Aliasnamen für ein Objekt, aber Sie können nicht ein alias von einem alias. Wie mit Zeiger Referenzen sind typisiert. In einigen Fällen, können Referenzen implementiert werden durch den compiler wie Zeiger, der automatisch dereferenziert, die auf die Nutzung, in einigen anderen Fällen kann der compiler Verweise, die keine eigentliche Lagerung. Der wichtige Teil ist, dass Sie Aliase zu einem Objekt muss initialisiert werden, mit einem Objekt und kann nicht umgesetzt werden, beziehen sich auf ein anderes Objekt, nachdem Sie initialisiert werden. Sind Sie einmal initialisiert, alle Verwendungen des Referenz verwendet werden, die am realen Objekt.
InformationsquelleAutor David Rodríguez - dribeas
Sogar die Frage stellen, "warum können wir nicht ein Verweis auf einen Verweis?" bedeutet, dass Sie nicht verstehen, was eine Referenz ist.
Eine Referenz ist ein anderer name für ein Objekt, mehr nicht. Wenn ich ein Objekt gespeichert in der variable X Erzeuge ich eine variable Y, die eine Referenz auf dieses Objekt. Sie reden beide über das gleiche Objekt, also was genau würde es bedeuten, einen Verweis auf Y? Es wäre nicht anderes als eine Referenz auf X, weil Sie alle verweisen auf die gleiche Sache.
Einen "Griff" nicht eine definition, so weit wie der C++ - Sprache ist betroffen. Allgemein gesprochen, ein "Griff" ist ein Konstrukt, das in irgendeiner form repräsentiert eine Art von Ressource. Sie bekommen es von einigen API, erstellt die Ressource. Sie rufen Funktionen, die das handle als parameter, um eine Abfrage des Status der Ressource ändern oder zu modifizieren. Und wenn Sie fertig sind mit es, Sie geben es an eine andere API-Funktion.
Einen Zeiger könnte einen Handgriff. Eine Referenz könnte ein Griff. Ein Objekt könnte ein Griff. Ein integer könnte ein Griff. Es hängt alles davon ab, was das system implementiert, dass das handhaben will, zu tun.
InformationsquelleAutor Nicol Bolas
Einen
handle
wird manchmal auch als "magic cookie". Es ist nur eine Wert von einigen undurchsichtigen Typ, der identifiziert ein Objekt. In einigen Fällen, es ist implementiert als eine tatsächliche Zeiger, so dass, wenn Sie warf es auf einen Zeiger auf den richtigen Typ haben, können Sie dereferenzieren und mit welcher Art von Sache, die Sie Punkte an.In anderen Fällen, werde es umgesetzt, wie etwas anderes als ein Zeiger, zum Beispiel, könnten Sie eine Tabelle von Objekten des Typs, und der Griff ist wirklich nur ein index in der Tabelle. Es sei denn, du weißt die base-Adresse in der Tabelle, Sie können nicht viel tun, der nichts mit dem index.
C++ einfach sagt, dass Verweise auf Referenzen sind nicht möglich. Es gibt nicht viel in der Art von "warum" - wenn Sie wollte, würde zu schlecht genug, Sie zweifellos haben könnte, darf es (auch als arrays von Referenzen, für diese Angelegenheit). Die Entscheidung wurde allerdings, dass es am besten war zu beschränken, Verweise (viel), so dass das, was Sie Taten.
InformationsquelleAutor Jerry Coffin
Der Unterschied ist der Kontext.
Grundlegenden Bedeutung des Griff ist, dass es sich um irgendein Objekt in sehr begrenzten Rahmen, zB. ein OS halten nur 20 geöffneten Dateien für einen Benutzer oder eine pid. Ein Zeiger verweist auf das gleiche Objekt in den Kontext von "Erinnerung". Und die Referenz ist ein "alias" für ein Objekt-es bezieht sich auf ein Objekt im Kontext des Quellcodes; damit Referenz auf eine Referenz nicht vorhanden ist, als Referenz, die bereits "ist" das Objekt.
InformationsquelleAutor Aki Suihkonen