我有一个char
(即字节)缓冲区,我通过网络发送.在将来的某个时候,我可能想要将缓冲区切换为不同的类型,如unsigned char
或short
.我一直在考虑做这样的事情:
typedef char bufferElementType;
每当我用缓冲元素做任何事情时,我都会声明它bufferElementType
而不是char
.这样我可以通过改变这个typedef切换到另一种类型(当然它不会那么简单,但它至少很容易识别需要修改的地方...... bufferElementType
附近会有一个).
这是typedef的有效/好用吗?难道不值得吗?这会在将来的某个时候让我头疼吗?会不会让维护程序员讨厌我?
我已经阅读了何时应该在C++中使用Typedef,但没有人真正涵盖这一点.
这是一个伟大的(和正常的)用法.但是,您必须小心,例如,您选择的类型符合相同的有符号/无符号条件,或者它们对运算符的响应类似.然后,之后更改类型会更容易.
另一个选择是使用模板来避免修改类型直到您编译的那一刻.定义为的类:
templateclass Whatever { CharType aChar; ... };
能够使用您选择的任何字符类型,同时它以相同的方式响应所有运算符.