在完成我的C++类之后,在我看来,结构/类几乎完全相同,除了一些细微的差别.
我以前从未用C语言编程; 但我确实知道它有结构.在C中是否可以继承其他结构并设置公共/私有的修饰符?
如果你能在常规C中做到这一点,为什么我们需要C++?是什么让类与结构不同?
这个问题就浮现在我的脑海,当我得知C++与C的背景下,即使有一个 struct为什么斯特劳斯认为有必要引入class关键字?我当时试过问过人,但得不到满意的答复.那么Stack Overflow社区可以回答它吗?
我们知道,struct并且class可以在语言的许多地方互换.令人困惑的是,关键字本身并不一定与标准中使用的语言相对应.例如,在草案标准N4567 [class]/10中,
甲POD结构109是一个非工会类既是琐碎类和一个标准布局类,和具有类型的非POD结构,非POD联合(或这些类型的阵列)的无非静态数据成员.类似地,POD联合是一个简单的类和标准布局类的联合,并且没有非POD结构类型的非静态数据成员,非POD联合(或这种类型的数组).甲POD类是一类可以是一个POD结构或一个POD结合.
在过于简化的术语,struct并且class是在以下情况下可以互换:
union但是,struct 显式不能在模板声明中用于引入类型模板参数:
template <struct T> // error
Run Code Online (Sandbox Code Playgroud)
我无法看到之间的任何显著差异struct和class,甚至在POD上面的例子,因为一个POD结构为界定标准,使用时请声明struct或class.
[class]/8 标准布局结构是使用类键结构或类键类定义的标准布局类.甲 标准布局联盟是与定义的标准布局类类键联合.
这引起了明显的不一致,这似乎相当多余和令人困惑.
我有两个问题:
是否有任何技术差异,我错过了明显区分struct和class?
这种笨拙背后的理由是什么?
我忽略了默认访问说明符之间的区别,因为每个人都已经知道了.