C ++ typedef类使用

时间:2013-03-19 14:03:10

标签: c++ class typedef

为什么要使用typedef class {} Name

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

2 个答案:

答案 0 :(得分:25)

这是“C”语言的宿醉。

在C中,如果你有

struct Pt { int x; int y; };

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

struct Pt p;

typedef帮助你在C

中避免这种情况
typedef struct { int x; int y; } Pt;

现在你可以做到

Pt p;

在C。

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

class Pt { int x; int y; };

允许你这样做

Pt p;

它在C ++中没有像在C. OTOH中那样提供任何标志性的好处,它会导致限制,因为这种语法不提供任何构造或破坏机制。

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

typedef class { int x; int y; } Pt;

您不能拥有名为Pt的构造函数,也不能使用析构函数。 所以从本质上讲,大多数情况下,你不应该用C ++来做这件事。

答案 1 :(得分:3)

这个答案假设课堂上有一些有趣的内容,而不仅仅是{}

在C ++中,你可以拥有一个与类同名的函数(为了与C兼容),但你几乎不想这样做。

您不能拥有与typedef同名的功能,因此这样做可以保护您免受错误的名称选择。几乎没有人会烦恼,即使你打扰你也可能会写下来:

class Name {};
typedef Name Name; // reserve the name

如果你所指的代码真的是写的(我不能通过你的链接看到它),那么它就像class Name {};(写一个特别的东西,为什么你会打电话一个空类Name?),但经过上述考虑后进行了修改。