将 typedef 用于类类型

将 typedef 说明符与类类型一起使用受到广泛支持,这是因为在 typedef 声明中声明未命名的结构的 ANSI C 操作。 例如,许多 C 程序员都使用:

// typedef_with_class_types1.cpp
// compile with: /c
typedef struct {   // Declare an unnamed structure and give it the
                   // typedef name POINT.
   unsigned x;
   unsigned y;
} POINT;

此类声明的优点是它允许如下声明:

POINT ptOrigin;

而不是:

struct point_t ptOrigin;

在 C++ 中,typedef 名称和实际类型(使用 class、struct、union 和 enum 关键字声明的)之间的差异更为明显。 尽管在 typedef 语句中声明无名称的结构的 C 做法仍有效,但它不会提供像在 C 中一样的记数性的好处。

// typedef_with_class_types2.cpp
// compile with: /c /W1
typedef struct {
   int POINT();
   unsigned x;
   unsigned y;
} POINT;

前面的示例声明使用未命名的类 typedef 语法声明一个名为 POINT 的类。 POINT 被视为类名称;但是,以下限制适用于通过这种方式引入的名称:

  • 名称(同义词)不能出现在 class、struct 或 union 前缀的后面。

  • 名称不能用作类声明中的构造函数名称或析构函数名称。

总之,该语法不提供针对继承、构造或析构的任何机制。

请参见

参考

typedef 说明符