有效使用typedef?

drb*_*rby 5 c++ typedef

我有一个char(即字节)缓冲区,我通过网络发送.在将来的某个时候,我可能想要将缓冲区切换为不同的类型,如unsigned charshort.我一直在考虑做这样的事情:

typedef char bufferElementType;
Run Code Online (Sandbox Code Playgroud)

每当我用缓冲元素做任何事情时,我都会声明它bufferElementType而不是char.这样我可以通过改变这个typedef切换到另一种类型(当然它不会那么简单,但它至少很容易识别需要修改的地方...... bufferElementType附近会有一个).

这是typedef的有效/好用吗?难道不值得吗?这会在将来的某个时候让我头疼吗?会不会让维护程序员讨厌我?

我已经阅读了何时应该在C++中使用Typedef,但没有人真正涵盖这一点.

Die*_*lla 11

这是一个伟大的(和正常的)用法.但是,您必须小心,例如,您选择的类型符合相同的有符号/无符号条件,或者它们对运算符的响应类似.然后,之后更改类型会更容易.

另一个选择是使用模板来避免修改类型直到您编译的那一刻.定义为的类:

template <typename CharType>
class Whatever
{
   CharType aChar;
   ...
};
Run Code Online (Sandbox Code Playgroud)

能够使用您选择的任何字符类型,同时它以相同的方式响应所有运算符.