为什么 C++ 中的关键字结构与 C 中的关键字结构不同?

Why does keyword struct in C++ differ from keyword struct in C?

从设计的角度来看,可以将 class 关键字添加到 C++ 中以实现所需的 OO 原则,如封装、继承、多态性以及构造函数和析构函数等......但同时保留关键字 struct 就像它在 C 中定义的那样,因此能够 a) 编译遗留 C 代码和 b) 定义简单的 PODs。

我看不出让 struct 表现(几乎)像 C++ 中的 class 的原因。

或者换句话说:他们为什么不在 C++ 中单独保留 C struct 关键字?

有什么提示吗?

I cannot see the reason for making a struct behave (almost) like a class in C++.

原因之一 - 提供从 struct 继承并添加 constructor/destructor 等的能力,并且仍然可以将其作为 C 结构传递给 C 函数。

and thus be able to a) compile legacy C code

但是 classes 的指定方式,您 可以 在 C++ 中编译遗留 C 结构定义(与结构无关的潜在向后不兼容除外,比如新增的关键词)。

b) define simple PODs.

定义简单 PODs 的能力并没有被 C++ class 引入的 OOP 特性所阻止。您可以在 C++ 中定义 POD classes。

a) 和 b) 都是在没有分离 struct 和 class 的含义的情况下实现的,因此您没有证明这样做的论据。

面向对象的概念class复合数据类型概念的扩展,这就是C的结构是。没有必要通过为 C 结构添加单独的定义来使语言复杂化,因为 C++ classes 足以实现该目的。 简单性 是一种语言所追求的重要特征 - 特别是当语言在这方面非常缺乏时。