说我有
struct mystruct
{
};
之间是否存在差异:
void foo(struct mystruct x){}
和
void foo(mystruct x){}
答案 0 :(得分:11)
在C中,后者无效。
然而在C ++中它们几乎是相同的:如果你还没有声明你的结构,第一个将是有效的,它会把它作为参数的前向声明一个一个。
答案 1 :(得分:7)
不在您编写的代码中。我知道使用带有和不带struct
的已定义类名的唯一区别如下:
struct mystruct
{
};
void mystruct() {}
void foo(struct mystruct x){} // compiles
void foo(mystruct x){} // doesn't - for compatibility with C "mystruct" means the function
因此,不要定义与类同名的函数。
答案 2 :(得分:3)
没有区别。后者是正确的C ++语法;前者可以作为恢复C程序员的遗留变体。
请注意,struct
和class
基本相同并且都定义了一个类,因此C ++中对C风格的POD结构没有特殊的处理。
[编辑:显然 是一个小差异,请参阅Mark B的优秀答案。]