2012-08-25 9 views
6

Ich wette, das wurde wahrscheinlich schon einmal gefragt, aber seit Referenz (Int & Name) ist das gleiche wie Referenzzählung von Suchern, konnte nicht eine einzige Sache zu finden.Smart Zeiger vs Referenz

Warum werden Referenzen nicht immer als Alternativen zu intelligenten Zeigern erwähnt? Ist es nur für den Nullfall, oder ist da noch etwas anderes? Welche Vor-/Nachteile gibt es für den Einsatz?

Antwort

7

Ich denke, Sie haben Ihre Terminologie durcheinander gebracht. Eine Referenz und der Begriff Referenzzählung sprechen nicht wirklich über dasselbe.

Referenzen und intelligente Zeiger oder sogar Zeiger sind sehr unterschiedlich und nicht austauschbar.

Eine Referenz kann nicht erneut eingefügt werden. Das bedeutet, dass, wenn Sie einmal eine Referenz haben, sie sich nur auf die Sache beziehen kann, auf die sie ursprünglich Bezug genommen hat. Eine Referenz ist lediglich eine Speicheradresse.

Ein Zeiger auf der anderen Seite zeigt auf eine Speicheradresse; Es kann so geändert werden, dass es auf verschiedene Speicheradressen zeigt.

Wenn jemand sagt, ein intelligenter Zeiger referenziert, bedeutet dies, dass der intelligente Zeiger die Anzahl der Objekte berücksichtigt, die auf den Speicher verweisen, auf den der intelligente Zeiger zeigt. Dies ist anders als eine Referenz.

Ich hoffe, dass hilft.

+0

Ich weiß gut, dass Referenz und Referenz zählen nicht gleich sind. Es sind die Suchenden, wie Google und die hier, die den Unterschied (Kontext) nicht sehen können und mir Websites zeigen, die sich auf Referenzzählung und Smartpointer beziehen, anstatt auf Referenz- und Smartpointer. – efaj

+0

Aber ich kannte Referenzen nicht nicht umgeschaltet/getauscht werden oder etwas anderes referenzieren. Jetzt damit ... es ist offensichtlich, warum sie keine intelligenten Zeiger ersetzen. – efaj