为什么使用typedef class {} Name
?
我在IBM C++ doc中学到了这一点,这里没有使用提示。
这是“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++ 中这样做。
这个答案假设课堂上有一些有趣的内容,而不仅仅是{}
.
在 C++ 中,您可以拥有与类同名的函数(为了与 C 兼容),但您几乎不想这样做。
您不能拥有与 typedef 同名的函数,因此这样做可以保护您免受不规范的名称选择。几乎没有人打扰,即使你要打扰你也可能会写:
class Name {};
typedef Name Name; // reserve the name
如果你所指的代码真的是写的(我不能通过你的链接看到它),那么它就像class Name {};
(这是一个奇怪的东西,你为什么要调用一个空类Name
?),但是修改了出于上述考虑。