gpt4 book ai didi

c - 为什么 C 不允许结构中存在成员函数?

转载 作者:行者123 更新时间:2023-11-30 21:48:29 26 4
gpt4 key购买 nike

C 和 C++ 之间的最大区别之一是结构中的成员函数。 C 不允许函数作为结构中的成员。我知道一种解决方法是使用函数指针作为结构成员,但这只是函数模拟,它违反了作用域规则。

如果 C 允许真正的函数作为结构的成员,那将是一个很棒的功能。但我不知道为什么C不这样做。有什么特别的原因吗?

最佳答案

你正在向后看。

C 的设计并不是从 C++ 开始,然后删除功能。 C 是从更古老的语言开始设计的,包括 B、FORTRAN 和当时的汇编语言。

在此基础上,C 的设计者添加了代表当代代码中经常出现的模式的功能,例如数据类型(而不是使用位)、用户定义的复合类型(结构)、清晰分离的函数(而不是指令流并到处跳转),传递参数(而不是手动通过寄存器和堆栈传递它们,相应地检索它们,然后手动清理),等等。

从那里开始,现在 OOP 语言的设计者添加了代表当代代码中经常出现的模式的功能,例如与其操作的数据(方法)、数据类型密切相关的函数继承(而不仅仅是组合)、可见性控制和封装(而不是将事物隐藏在不透明指针后面)、调用点的多态性(而不是显式检查表示数据类型的内部标志)等等。

现在应该清楚了:C++ 的设计者是如何引入这么多功能的?因为C已经在那里,他们可以从那里开始。为什么 C 语言的设计者不一开始就引入所有这些功能?嗯,因为那些人忙于设计 C 本身。

关键是,每一种成功的语言通常都比以前的语言有所改进。与以前相比,C 提供的一切都使编程变得更安全、更容易。。当然,它并没有具备我们今天拥有的所有功能,但即使回想起来,它也不应该具备 - 语言设计者需要在实践中了解程序员需要什么样的东西上。

关于c - 为什么 C 不允许结构中存在成员函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34808887/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com