Tuote oli sellainen, että siihen lisättiin aina saman tuotteen yhteensä- tiedot:
tuotteet[i] += tuote; yhteensa += tuote;
Sama voitaisiin tehdä kutsulla
tuotteet[i].ynnaa(tuote); yhteensa.ynnaa(tuote);
Osittain on makuasia kummalla tavalla lisääminen tehdään. += - operaattorin käyttö on tullut mahdolliseksi, koska luokassa cTuote on esitelty miten operaattorin on käyttäydyttävä jos luokan olioon halutaan lisätä toinen saman luokan olio:
cTuote &operator+=(const cTuote &tuote) { ynnaa(tuote); return *this; }
Operaattori on laitettu palauttamaan saman luokan olio, koska joskus voidaan haluta C:mäistä ketjusijoitusta:
tuote3 = tuote2 += tuote1;
Toisaalta ketjusijoitus ei ole aina selvin mahdollinen tapa tehdä asioita, samahan voitaisiin tehdä
tuote2 += tuote1; tuote3 = tuote2;
joten myös operaattori += voitaisiin suhteellisen hyvällä omalla tunnolla määritellä myös (luokassa cTuote)
void operator+=(const cTuote &tuote) { ynnaa(tuote); }
Oikeasti operaattoria kutsuttaisiin:
tuote2.operator+=(tuote1); // vrt: tuote2.ynnaa(tuote1);
mutta operaattori käsitellään erikoistapauksena ja em. kutsu voidaan kirjoittaa lyhyemmässä muodossa
tuote2 += tuote1;
Huomattakoon että samasta operaattorista voi olla useita eri versiota riippuen siitä mitä lisätään. Eli voisi olla esimeriksi:
tuote2 += 2000.0; // lisätään reaaliluku hintaan; tuote2 += 5; // lisätään kokonaisluku kappalemäärään