wow ! ! une derniere chose que je ramarque maintenant :
remplace :
MyClass operator+(MyClass s1, MyClass s2)
par
MyClass operator+(const MyClass& s1, const MyClass& s2)
En effet, la 1ere forme prend une COPIE de s1 et s2, donc ça appelle le constructeur par copie ( ou alors ça copie tous les champs si tu n´en a pas) pour s1 et s2 --> perte de temps.
Avec la 2e forme, tu travailles directement sur la classe originale ( sans copie) grace au &
donc c´est plus rapide !
le mot clé " const" est une sécurité : il veut dire " je te permet de travailler sur l´original, mais je ne te permets pas d´y modifier"
par contre, faut voir s´il ne va pas gueuler avec tes accesseur printa() ( si c´est le cas, il ne gueulerait pas avec friend et l´appel privé direct) mais au pire, tu enleves juste les " const" --> tu sais ce que tu fais 
En tout, le passage par référence & est + que conseillé 