【问题标题】:Does the idea of 'Class' in C++/C#/Java come from struct in C? [duplicate]C++/C#/Java 中“类”的概念是否来自 C 中的结构? [复制]
【发布时间】:2013-12-22 07:41:59
【问题描述】:

我很久以前就有这个疑问了。点操作符最早用在C中的struct中,到底是Class的思想还是C中基于struct的Class的设计?实际上我非常怀疑它是,只是还没有看到任何关于此的官方文档。

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

【问题讨论】:

  • C 中的 Struct 的功能要少得多。 C 不是 OOP 语言
  • 结构和类共存于 oop 世界
  • 你读过《使用 ANSI-C 进行面向对象编程》一书吗?我要问的是创建 Class 语法的想法是否来自 C 中的 struct,而不是为什么 C 不是 OOP 语言!

标签: c# java c++ c


【解决方案1】:

没有1

虽然 语法 有点相似,但这只是语法。 “类”和“对象”的概念早于 C 几年2

Simula 是在 60 年代开发的:

Simula 是 1960 年代在奥斯陆的挪威计算中心开发的两种模拟编程语言 Simula I 和 Simula 67 的名称。..

Simula 67 引入了对象、类、继承和子类、虚拟方法、协程、离散事件模拟以及垃圾收集功能。在 Simula 派生中引入了子类型化。

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

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


1 尽管某些概念可以在 C 中模拟,但这并不意味着 Object-Oriented Programming 源自 C 结构或实现,或者是 C 结构或实现的结果。

2 Simula 67 在 1968 年正式标准化,而 "the most creative period" in C development 直到 1972 年才添加了对结构的支持。 C(“C 编程语言”)事实上的早期标准直到 1978 年才发布。

【讨论】:

【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-25
    • 2011-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多