Molto probabilmente, l'autore del codice stava tentando di evitare il potenziale conflitto tra i nomi dei membri dati ei nomi dei parametri del costruttore nell'elenco di inizializzazione. Molto probabilmente, l'autore non era a conoscenza del fatto che le regole di ricerca C++ assicurano che il conflitto non si verificherà comunque. Cioè il seguente codice produrrà anche i risultati attesi
class floatCoords {
public:
floatCoords(float x, float y, float width, float height)
: x(x), y(y), width(width), height(height)
{
}
float x, y, width, height;
...
anche se potrebbe rivelarsi fonte di confusione per un lettore non preparato.
Ovviamente, all'interno del corpo del costruttore, i nomi dei parametri nascondono i nomi dei membri, rendendo quindi necessario utilizzare this->...
o nomi qualificati per accedere ai membri dei dati. È probabile che l'autore del codice stia cercando di evitare anche quello.
Vedi anche: http://stackoverflow.com/questions/228783/what-are-the-rules-about-using-an-underscore-in-ac-identifier/228797#228797 –
@Martin: Grazie, mi piace il tuo link ancora meglio. –
Evito completamente i trattini bassi solo in modo che non debba spiegare/ricordare il bit "non seguire con una lettera maiuscola". –