C++ typedef类使用

kir*_*off 13 c++ typedef class

为什么用typedef class {} Name

我在IBM C++ doc中学到了这一点,没有提示在这里使用.

use*_*353 26

这是'C'语言的宿醉.

在C中,如果你有

struct Pt { int x; int y; };
Run Code Online (Sandbox Code Playgroud)

然后要声明这个结构的变量,你需要做

struct Pt p;
Run Code Online (Sandbox Code Playgroud)

typedef帮助你在C中避免这种情况

typedef struct { int x; int y; } Pt;
Run Code Online (Sandbox Code Playgroud)

现在你可以做到

Pt p;
Run Code Online (Sandbox Code Playgroud)

在C.

在C++中,这从来都不是必需的,因为

class Pt { int x; int y; };
Run Code Online (Sandbox Code Playgroud)

允许你这样做

Pt p;
Run Code Online (Sandbox Code Playgroud)

它在C++中没有提供符号优势,因为它在C. OTOH中提供,它会导致限制,因为这种语法不提供任何构造或破坏机制.

即你不能在构造函数或析构函数中使用名称typedef名称.

typedef class { int x; int y; } Pt;
Run Code Online (Sandbox Code Playgroud)

你不能有一个名为Pt的构造函数,也不能使用析构函数.所以从本质上讲,大多数情况下,你不应该在C++中这样做.