学习C/c++的都知道typedef, 可以用来给类型起个别名,以前我觉得这样做的好外有以下:
- 简化编程,
有时变量在太长,声明起来不方便,这样就好办了。尤其是使用模板参数的时候,象vector, list等。 如:typedef multimap<string, string>::size_type sz_type;
sz_type sz_entries; - 提高程序的移植性
如: typedef short INDEX; 当INDEX容量不够的时候,可以改为
typedef long INDEX; MFC 中 TCHAR 也是这样,当使用UNICODE的时候,就会是TCHAR代表UNICODE, 再则,是CHAR型。
后来发现typedef也可以使用在类的定义中: 如:
class ConcoreteClass
{
public:
typedef int INDEX;
...
};这时,其它类想使用这个定义时,就需要 ConcreteClass::INDEX nIndex;
跟类成员变量作用域相同,如果声明在private:中,则只有该类可以定义这个类型。
再后来,发现typedef也可以出现在函数体中,作用域也只在函数体中。
总结:
typedef的作用域与类,类,变量的作用域类似。