VampireGirl -> En simplifiant un peu, il n'y a rien que tu puisses faire en C++ que tu ne pourrais pas très bien faire en C avec d'autres mécanismes moins restrictifs. L'intérêt de ces restrictions est sémantique, sécuritaire (niveau code correct) et permet d'utiliser certains autres mécanismes.
De façon générale, je te décourage à penser "je n'en vois pas l'utilité". En programmant en C++ tu devrais penser l'inverse: Toujours utiliser des références (plus restrictif) et n'utiliser le pointeur que si tu y es absolument obligée.
En poussant à l'extrême, je dirais même qu'en C++11 tu ne devrais jamais:
- Utiliser de pointeur style C (-> soit référence, soit shared_ptr ou unique_ptr).
- Utiliser new (-> conteneur standard, make_shared ou make_unique).
- Utiliser des arrays style C (-> au moins std::vector ou std::array).
- Utiliser de cast syle C (-> static_cast dans la plupart des cast)
J'exagère un peu, mais c'est un set de règles que j'enfreins rarement sur une application de bureau. Ça doit au moins tirer au alarme quand c'est le cas.