说我有
struct mystruct
{
};
有没有区别:
void foo(struct mystruct x){}
和
void foo(mystruct x){}
?
说我有
struct mystruct
{
};
有没有区别:
void foo(struct mystruct x){}
和
void foo(mystruct x){}
?
在 C 中,后者是无效的。
但是在 C++ 中它们几乎是相同的:如果您还没有声明您的结构,第一个将是有效的,它会将其视为参数的前向声明。
不在您编写的代码中。我所知道的使用带和不带定义的类名的唯一区别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
所以,不要定义与类同名的函数。
没有不同。后者是正确的 C++ 语法;前者可以作为恢复 C 程序员的遗留变体。
请注意,struct
andclass
本质上是相同的,并且都定义了一个类,因此在 C++ 中对 C 风格的 POD 结构没有特殊处理。
[编辑:显然有一个小的区别,请参阅 Mark B 的优秀答案。]