Ein C ++ - Array ist eine zusammenhängende Sequenz von Speicherplätzen. a[x]
bedeutet "der x-te Speicherplatz nach dem auf a
gezeigt wird."
Was würde es bedeuten, auf das 12.4. Objekt in einer Sequenz zuzugreifen?
Dies ist ein Fehler. In [expr.sub]
:
Ein Postfix-Ausdruck gefolgt von einem Ausdruck in eckigen Klammern ist ein Post-Fix-Ausdruck. Einer der Ausdrücke muss den Typ "Zeiger auf T" haben und der andere darf eine Aufzählung ohne Aufzählung oder einen Integraltyp haben.
Mir ist keine Klausel in der Norm bekannt, die besagt, dass die Konvertierung hier stattfinden sollte (zugegeben, ich wäre nicht überrascht, wenn eine solche Klausel existiert), obwohl das Testen mit ideone.com einen Kompilierungsfehler erzeugt hat.
> Wenn Sie jedoch eine Klasse anstelle eines Zeigers subskribieren - z. std::vector
oder std::array
- dann hat die Überladung von operator[]
die übliche Semantik eines Funktionsaufrufs, und Gleitkomma-Argumente werden in die entsprechende size_type
konvertiert.
Tags und Links c++