template<class T> mut { T* ptr; public: mut() { ptr=new T; } ~mut() { delete ptr; } operator T&() const { return *T; } };
1: Ne fais pas semblant de ne pas avoir lu la discussion précédente... C'est clairement plus efficace en mettant "const" qu'en ne le mettant jamais, puisque le compilo va louper plein d'optimisations dans la fonction appelante, avec ta méthode... Et tu vas devoir faire un memcpy dans l'exemple de Kevin au lieu de faire un move, etc...
3: Si tu te sers des facultés d'abstraction pour écrire du code bcp plus compact (utiliser des std::string au lieu de char*, par exemple), alors évidemment ton code sera moins efficace (mais aussi plus simple). Si tu veux écrire du code aussi efficace qu'en C, tu peux. Mais en plus, tu as les templates et les mutables qui te permettent de faire encore mieux. (tu peux te servir des templates comme d'un callback hyper puissant, par exemple; dans GTC 2.0 le parser utilise à fond les templates pour décrire les expressions avec priorités et ça permet de faire un truc hyper efficace)
7: C quoi la différence entre structure et classe selon toi?