Je suis en train de concevoir une classe Buffer dont le but est de représenter un morceau de mémoire.void * ou char * pour la représentation du tampon générique?
Mon tampon sous-jacent est un char*
(enfin, un boost::shared_array<char>
en fait, mais cela n'a pas vraiment d'importance).
Je suis coincé à décider quel prototype choisir pour mon constructeur:
Dois-je aller avec:
Buffer(const void* buf, size_t buflen);
Ou avec:
Buffer(const char* buf, size_t buflen);
Ou autre chose?
Qu'est-ce qui est habituellement fait, et pourquoi?
@Luca Matteis: J'ai l'intention de fournir un partage implicite de la mémoire. Mais c'est tout à fait hors sujet. – ereOn
Il ya une transmogrification malheureuse - incitée par Unicode - en ce que 'char' devient un synonyme de' octet' et a peu à voir avec "caractère". Cette question est symptomatique de ce changement; J'ai été tenté de "typedef char octet;" parfois pour rendre le code moins trompeur. – msw
@msw: Outre la compatibilité de type avec les littéraux de chaîne, existe-t-il une raison d'utiliser "char", par opposition à "char signé" ou "char signé"? Cela me semble un type plutôt inutile. – supercat