为什么要使用typedef class {} Name
?
我在IBM C++ doc中学到了这一点,没有提示在这里使用。
答案 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
?),但经过上述考虑后进行了修改。