2012-10-08 78 views
4

假设我宣布一个新的C++结构类型:结构实例与 “结构” 关键字

my_struct foo; 

struct my_struct foo; 

struct my_struct { 
    int a; 
    int b; 
}; 

我可以通过创建这个结构类型的新实例

如果两者都有效,有什么区别吗?

回答

14

是的,你可以使用任何一种方法。不同的是,这种形式:

my_struct foo; 

是不是在C法律,所以你必须使用这种形式:

struct my_struct foo; 

这是在C++支持向后兼容C.

+0

解释它..谢谢! –

+1

不仅为了向后兼容,两者略有不同,并且有些情况下需要'struct'(或'class')。可以说,尽管如此,还是有很少的例子。 –

+1

@DavidRodríguez-dribeas:你能详细说明一下吗? –

2

两个工作。第二个工作的主要原因是与C兼容:在C中,第一个不起作用。因此,struct通常是C中的typedef,并且structs和typedefs有两种不同的名称。

+0

好的,谢谢! –