之间是否存在差异:
struct B {...};
struct D : B {...};
和
struct B {...};
struct D : public B {...};
如果不是,为什么每个人,包括标准,使用更详细的第二个变体?
答案 0 :(得分:4)
不,因为对于结构体,默认访问说明符和默认继承类型都是public
。说到这一点,类的默认访问说明符是private
,这是在声明类型的上下文中C ++中struct
和class
之间的唯一区别。
至于“为什么” - 可能是因为它更明确,而且不需要记住class
和struct
之间的区别。
答案 1 :(得分:2)
不,两者完全一样。而且我不确定每个人都使用第二种变体。举个例子,我没有。标准也没有在任何地方使用它。例如,在C ++11§3.8中,我们看到了:
struct D1 : B { void f(); };
另一方面,明确表示不了解规则的人可以理解代码。