Najprawdopodobniej autor kodu próbował uniknąć potencjalnego konfliktu między nazwami członków danych i nazwami parametrów konstruktora na liście inicjalizatora. Całkiem prawdopodobne, że autor nie był świadomy faktu, że zasady wyszukiwania C++ upewniają się, że konflikt i tak nie wystąpi. To znaczy. poniższy kod będzie także dawał oczekiwane wyniki:
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;
...
, chociaż może to okazać się mylące dla nieprzygotowanego czytelnika.
Oczywiście w treści konstruktora nazwy parametrów będą ukrywać nazwy elementów, przez co konieczne będzie użycie this->...
lub nazw kwalifikowanych w celu uzyskania dostępu do elementów danych. Prawdopodobnie autor kodu próbował tego również uniknąć.
Zobacz również: http://stackoverflow.com/questions/228783/what-are-the-rules-about-using-an-underscore-in-ac-identifier/228797#228797 –
@Martin: Dzięki, podoba mi się twój link jeszcze lepiej. –
Unikam napotkanych znaków podkreślenia, więc nie muszę wyjaśniać/pamiętać, że "nie podążaj za dużą literą". –