gpt4 book ai didi

c++ - 我的 API 应该使用非成员函数来作用于对象,还是使函数成为对象的公共(public)函数?

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:24:04 26 4
gpt4 key购买 nike

最近我了解到 OOP 的许多好处(包括漂亮的代码)。

所以,现在我正在尝试编写一个小的物理 API 供我个人使用,也许可以放入一些小游戏中。这主要是因为我喜欢练习编码,而且我喜欢我的物理。

但事实是,许多 API 都有这样的接口(interface)(包括 Windows API):

// In this case, Object is just a plain data container without a constructor.
Object object = NewObject(...);
DoSomething(object);
DoAnotherThing(object,...);
... and so on

API 应该是这样安排的,还是有更多 OO 风格的方式,比如:

Object object(...);
object.DoSomething(...);
object.DoAnother(otherObj,...);
otherObject.attachNode(object);
... and so on again

希望您能理解。因此,按问题总结一下,哪种方法更受欢迎,以及为什么我看到很多第一个示例,尽管 OOP 得到了美化(尽管引用中的这些 API 可能只是旧的,例如 Windows API)。

附带说明一下,您如何看待 Windows API?对我来说,这似乎有点……不对。

最佳答案

API 可以以您想要的任何方式呈现。如果你想做一个C++ API,那么你可以尽情地使用成员函数。借助 Win32 API,Microsoft 必须制作可从 C(和各种其他语言)以及 C++ 访问的内容,因此他们必须使用普遍可访问的功能来表达所有内容。这意味着他们不能使用类(或通过扩展、成员函数)、命名空间、重载、模板和各种其他 C++ 功能。

然后他们采用了这个相当合理的前提,并构建了可以想象到的最丑陋、最不一致的 API。

如果您的 API 旨在用于 C++ 代码,那么您可以使用您喜欢的所有 C++ 功能。

附带说明一下,即使在 C++ 中,将所有内容都设为成员函数也不一定更可取。默认使用非成员函数可以是a very good idea ,即使在面向对象的代码中,尽管原因与 Microsoft 在其 API 中的原因不同。

关于c++ - 我的 API 应该使用非成员函数来作用于对象,还是使函数成为对象的公共(public)函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3785048/

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