gpt4 book ai didi

c++ - GObject 与 C++ : What benefits does GObj offer, 以及它在速度/大小方面的比较如何?

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

它为面向对象的语言(如 C++)提供了什么?还是没有它就不能使用 GTK+?

假设两个示例使用相同的编译器,就可执行文件的大小和速度而言,对象的 GObject 实现是否具有与 C++ 相似的质量?或者是否有一些权衡取舍 GObject 会因为它提供的额外功能而变慢?

最佳答案

GObject(有点像 Windows 世界中的 COM)是一种 C API,设计时考虑了跨语言互操作性。

这意味着您可以在任何支持调用 C 函数的语言中使用 GObjects,但这使得用非 C 语言编写真正可从任何语言重用的 GObjects 变得非常困难(如果例如,你用 Python 编写了一个 GObject 派生类,每次你想在 C 中使用这个类的对象时,你都必须嵌入一个 Python 解释器。

可以为多种语言(例如 Python、Perl、JS 等)半自动创建绑定(bind),这就是 GObject 的优势之一。这说明了 GObject 提供的有点不透明的 API,我承认,这很难完全理解。

不幸的是,它也不适合 C++ 语言。 GObjects 与 C++ 类没有微不足道的关系,即使 绑定(bind) 可用 (Gtkmm),也无法轻松编写“继承自 GObject”的 C++ 类并将其公开给世界。你必须为此编写 C。

[世界需要的是对 C++ 语言进行某种扩展,使其易于与 GObject 互操作,有点像 Windows 上的 C++Cx,但 1) 这是一项艰巨的任务,也许可以通过 GCC 插件实现,并且 2) 在 Gnome 世界或 Linux 世界(KDE 是一个明显的异常(exception))中,没有向 C++ 发展的势头。现在我们只能使用 Gtkmm 绑定(bind)。]

关于c++ - GObject 与 C++ : What benefits does GObj offer, 以及它在速度/大小方面的比较如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8020626/

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