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++中这样做.