Da das Array beim Übergeben als Parameter an die Funktion (oder den Operator) in den Zeiger zerfällt. Also lösche p [] wäre einfach äquivalent zum Löschen von p.
[bearbeiten] Wir können von löschen als spezielle Vorlage Betreiber denken. Der Operator sollte in der Lage sein, zwischen p und p [] zu unterscheiden, um die richtige "Spezialisierung" auszuwählen (Nicht-Array- oder Array-Löschung). Template-Argument-Ableitungsregeln machen diese Auswahl jedoch unmöglich (aufgrund des Zerfalls des Arrays können wir nicht zwischen p [] und p unterscheiden, wenn wir das Argument ableiten).
So können wir nicht mit Namen verwenden Operator löschen für beiden casees und benötigen eine anderer Betreiber einzuführen löscht [] mit diffrent Namen (Suffix [] kann als Teil des Bedienernamen behandelt werden) für die Array-Fall.
[Bearbeiten 2] Hinweis. löschen p [] ist nach dem aktuellen Standard überhaupt nicht sintax. Die obige Argumentation zeigt nur Probleme, die auftreten könnten, wenn wir versuchen würden, delete p [] unter Verwendung existierender C++ - Konzepte zu interpretieren.
Warum der Downvote/Vote zu schließen? Was kann ich tun, um die Frage zu verbessern? – Michael0x2a
@Deflect: Das war meins, Normalerweise "Warum wurde dieses Sprachkonstrukt gewählt?" Fragen sind einfach nicht konstruktiv, weil es keine objektive, vernünftige Antwort gibt. Aber in diesem Fall gibt es ein paar gute Gründe, also habe ich vielleicht zu früh geurteilt (ich habe meinen Downvote ziemlich schnell entfernt). – KillianDS
@KillianDS: Okay, das macht Sinn. Danke für Ihre Antwort! [und mich beruhigen, dass ich nicht völlig verrückt bin :)] – Michael0x2a