Warum erkennt C ++ nicht, wenn mit den Operatoren [] standardmäßig auf Vektorelemente außerhalb des Bereichs zugegriffen wird?

ch verstehe, dass Arrays eine primitive Klasse sind und daher keine eingebauten Methoden zur Erkennung von Fehlern außerhalb des Bereichs haben. Die Vektorklasse hat jedoch die eingebaute Funktion .at (), die diese Fehler erkennt. Durch die Verwendung von Namespaces kann jeder die Symbole [] überladen, um als Funktion .at () zu fungieren, indem er einen Fehler auslöst, wenn auf einen Wert außerhalb des Bereichs des Vektors zugegriffen wird. Meine Frage lautet: Warum ist diese Funktionalität in C ++ nicht standardmäßig?

EDIT: Nachfolgend finden Sie ein Beispiel für die Überladung des Vektoroperators [] im Pseudocode (ich glaube - korrigieren Sie mich, falls erforderlich):

Item_Type& operator[](size_t index) { // Verify that the index is legal.
if (index < 0 || index >= num_items) {
   throw std::out_of_range
     ("index to operator[] is out of range");
}
 return the_data[index]
}

Ich glaube, diese Funktion kann in einen benutzerdefinierten Namespace geschrieben werden und ist relativ einfach zu implementieren. Wenn dies zutrifft, warum ist dies nicht die Standardeinstellung?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage