Ich bin unklar über die Verwendung von Auto in einer Funktion, die ich überschaue. Bei einem gegebenen Parameter wie definiert:erkennt automatisch, dass ein Typ ein Zeiger ist?
someFunction(const unique_ptr<BSTNode<int>>& node, paramType param) {
der Körper der Funktion stellt eine lokale Variable wie folgt aus:
auto *localNode = node.get();
Mein Verständnis von Auto ist, dass es die Art der folgert, was zugeordnet ist dazu zur Kompilierzeit. Die Dokumentation gibt an, dass unique_ptr::get()
einen Zeiger auf das Objekt zurückgibt, das es verwaltet. Angesichts dieser Tatsache, warum ist es notwendig, *
der Variablendeklaration hinzuzufügen?
aber wenn Auto bereits den Typ auf einen Zeiger ableitet, würde das Hinzufügen eines zusätzlichen * nicht zu einem ** Typ führen? –
@ user5797668 Nein, "auto" bedeutet nicht "den Typ des Initialisierers"; es bedeutet ungefähr "welcher Typ auch immer benötigt wird, um den Typ des Initiators zu treffen". –