typedef 也有作用域

学习C/c++的都知道typedef, 可以用来给类型起个别名,以前我觉得这样做的好外有以下:

  1. 简化编程,
    有时变量在太长,声明起来不方便,这样就好办了。尤其是使用模板参数的时候,象vector, list等。 如:

    typedef multimap::size_type sz_type;
    sz_type sz_entries;

  2. 提高程序的移植性
    如: 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的作用域与类,类,变量的作用域类似。

你可能感兴趣的:(BASIC,C/C++)