小编use*_*092的帖子

为什么C++中都存在struct和class?

我们知道,struct并且class可以在语言的许多地方互换.令人困惑的是,关键字本身并不一定与标准中使用的语言相对应.例如,在草案标准N4567 [class]/10中,

POD结构109是一个非工会类既是琐碎类和一个标准布局类,和具有类型的非POD结构,非POD联合(或这些类型的阵列)的无非静态数据成员.类似地,POD联合是一个简单的类和标准布局类的联合,并且没有非POD结构类型的非静态数据成员,非POD联合(或这种类型的数组).甲POD类是一类可以是一个POD结构或一个POD结合.

在过于简化的术语,struct并且class是在以下情况下可以互换:

  • 宣布"阶级"
  • 声明范围的枚举类型的声明
  • 详细说明了类型说明符,除非声明了"class" union

但是,struct 显式不能在模板声明中用于引入类型模板参数:

template <struct T> // error
Run Code Online (Sandbox Code Playgroud)

我无法看到之间的任何显著差异structclass,甚至在POD上面的例子,因为一个POD结构为界定标准,使用时请声明structclass.

[class]/8 标准布局结构是使用类键结构类键类定义的标准布局.甲 标准布局联盟是与定义的标准布局类类键联合.

这引起了明显的不一致,这似乎相当多余和令人困惑.

我有两个问题:

  1. 是否有任何技术差异,我错过了明显区分structclass

  2. 这种笨拙背后的理由是什么?

我忽略了默认访问说明符之间的区别,因为每个人都已经知道了.

c++ standards struct class

8
推荐指数
2
解决办法
1019
查看次数

标签 统计

c++ ×1

class ×1

standards ×1

struct ×1