在struct中使用public关键字

时间:2012-08-12 11:38:24

标签: c++ inheritance struct access-modifiers

之间是否存在差异:

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

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

如果不是,为什么每个人,包括标准,使用更详细的第二个变体?

2 个答案:

答案 0 :(得分:4)

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

至于“为什么” - 可能是因为它更明确,而且不需要记住classstruct之间的区别。

答案 1 :(得分:2)

不,两者完全一样。而且我不确定每个人都使用第二种变体。举个例子,我没有。标准也没有在任何地方使用它。例如,在C ++11§3.8中,我们看到了:

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

另一方面,明确表示不了解规则的人可以理解代码。