Per esempio una dichiarazione come quella:Perché il C++ ci consente di racchiudere il nome della variabile tra parentesi quando si dichiara una variabile?
int (x) = 0;
O anche che:
int (((x))) = 0;
mi sono imbattuto su questo perché nel mio codice mi è capitato di avere un frammento simile a quello seguente:
Ovviamente volevo costruire l'oggetto C
che poi avrebbe fatto qualcosa di utile nel suo distruttore. Tuttavia come accade il compilatore considera C (y);
come una dichiarazione della variabile con tipo C
e quindi stampa un errore sulla ridefinizione . La cosa interessante è che se scrivo come C (y).f()
o come qualcosa come C (static_cast<B*> (y))
verrà compilato come previsto. La migliore soluzione moderna consiste nell'utilizzare {}
nella chiamata del costruttore, ovviamente.
Quindi, come ho capito dopo, è possibile dichiarare variabili come int (x) = 0;
o anche int (((x))) = 0;
ma non ho mai visto nessuno in realtà utilizzare dichiarazioni come questa. Quindi mi interessa - qual è lo scopo di tale possibilità perché per ora vedo che crea solo il caso simile al famigerato "parse più irritante" e non aggiunge nulla di utile?
Lo "scopo" della possibilità è probabilmente quello di semplificare il parser. – molbdnilo
possibile duplicato di [Qual è lo scopo di una dichiarazione come int (x); o int (x) = 10;] (http://stackoverflow.com/questions/26832321/what-is-the-purpose-of-a-declaration-like-int-x-or-int-x-10) – GSerg
@GSerg Divertente come il testo della mia domanda risponde alla domanda dalla seconda risposta nella tua domanda collegata, poiché fornisco l'esempio dove consentire tali dichiarazioni porta a risultati imprevisti :) – Predelnik