在C++中,可以创建一个结构:
struct MyStruct
{
...
}
还可以执行以下操作:
typedef struct
{
...
} MyStruct;
然而,据我所知,两者之间没有明显的区别。哪一个更可取?如果没有区别,为什么这两种方式都存在呢?在风格或可读性方面,一个比另一个好吗?
发布于 2009-07-05 12:21:50
typedef版本是
typedef foo bar;
它定义了一个新的"type“bar作为foo的别名。在您的例子中,foo恰好是一个结构。在C语言中,这是引入新“类型”的唯一方法(在引号中,因为它们并不真正等同于int、float和co)。在C++中,这并不是很有用,因为C++的设计目的是使新类型的定义比C更简单、更完整(至少在C++刚开始的时候是这样),而且C++甚至不需要引用以前声明的结构(或类)。
发布于 2009-07-05 12:19:07
后者是为了与C语言兼容-在新的C++代码中使用第一个。
发布于 2009-07-05 12:16:01
您将使用typedef,因此在声明该结构的变量时不需要指定struct关键字。
如果不使用typedef:
struct MyStruct foo;
使用typedef:
MyStruct foo;
基本上,您使MyStruct看起来像一个新类型,因此它还实现了某种级别的类型抽象,因为程序员不需要显式地知道它是什么类型。您可以将MyStruct传递到一个函数中,操作其中的数据并返回它,程序员无需担心实际发生的事情。
出于这个原因,许多C标准库都使用了typedefs。
https://stackoverflow.com/questions/1083959
复制相似问题