2012-08-12 37 views
1

有没有之间的差异:使用public关键字与结构

struct B {...}; 
struct D : B {...}; 

和:

struct B {...}; 
struct D : public B {...}; 

如果没有,为什么每个人,包括标准,用更详细的,第二个变种?

+0

人们正在使用第二种方式,所以他们在结构中的类中使用相同的方式。 – elyashiv 2012-08-12 11:43:02

+1

[C++中的struct和class有什么区别]可能的重复(http://stackoverflow.com/questions/92859/what-are-the-differences-between-struct-and-class-in-c) – juanchopanza 2012-08-12 11:47:28

+0

实际上,该标准有第一个变体的例子,请参阅我的答案。 – juanchopanza 2012-08-12 12:05:46

回答

2

不,这两个完全一样。我不确定每个人都使用第二个变体。比如,我不这样做。标准在各处都没有使用。例如,在C++ 11第3.8节中,我们看到:

struct D1 : B { void f(); }; 

在另一方面,是明确的手段,人谁不知道规则可以理解的代码。

4

不,因为对于结构体,默认访问说明符和默认的继承类型都是public。说到这一点,类的默认访问说明符是private,这是C++中structclass在声明类型的上下文中的唯一区别。

至于“为什么” - 可能是因为这是一个有点更加明确,一个并不需要记住在这个问题classstruct之间的差异。

+2

“,这是struct/class声明中上下文中struct和class的唯一区别”。有一个不相关的区别,就是'class'具有与模板相关的另一个含义,'struct'不具有其他含义。 – hvd 2012-08-12 11:44:58

+0

@ hvd很好的一点。 – juanchopanza 2012-08-12 11:45:50