C++/C#/Java 中的'Class'思想是否来自 C 中的结构?

Does the idea of 'Class' in C++/C#/Java come from struct in C?

本文关键字:结构 Java 中的 Class C++ 是否      更新时间:2023-10-16

我很久以前就有这个疑问了。点运算符最早在C中的结构中使用。Class的思想或Class的设计是基于C中的struct吗?事实上,我非常怀疑,只是还没有看到任何关于这方面的官方文档。

编辑:我想问的是,创建类语法(在C++中)的想法是否来自C中的结构,而不是为什么C不是OOP语言!

1

虽然语法有点相似,但这只是语法。";类";以及";对象">C早几年2

模拟器是在60年代开发的:

Simula是两种模拟编程语言的名称,Simula I和Simula 67,于20世纪60年代在奥斯陆的挪威计算中心开发。。

Simula67介绍了对象、类、继承和子类、虚拟方法、协同程序、离散事件模拟以及垃圾收集功能。在Simula导数中引入了子类型。

Simula被认为是第一种面向对象的编程语言。顾名思义,Simula是为进行模拟而设计的,该领域的需求为当今面向对象语言的许多功能提供了框架。。

Simula的影响通常被低估,Simula类型的对象在C++、Java和C#中被重新实现C++的创建者Bjarne Stroustrup承认Simula 67对他开发C++影响最大。。


1即使一些概念可以在C中模拟,这并不意味着面向对象编程起源于C结构或实现,或者是C结构或实施的结果。

2Simula67在1968年被正式标准化;最具创造性的时期;直到1972年才增加了对structs的支持。事实上,C语言的早期标准("C编程语言")直到1978年才公布。

在早期版本的C++(或C with Classes)中,对象是直接用struct实现的。当你使用cfront时,你可以看到它。现在它可能是,但这取决于实现。至于语法,我相信它来自algor(但我不确定)。