GObject vs C++:GObj提供了哪些好处,以及它在速度/大小方面的比较?

Sai*_*aif 5 c++ gobject

它为面向对象语言(如C++)提供了什么?或者没有它可以使用GTK +?

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

Ale*_* C. 6

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

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

可以为许多语言(例如Python,Perl,JS等)半自动化创建绑定,这就是GObject的优势之一.这说明了GObject提供的有些不透明的API,我承认,这很难彻底理解.

不幸的是,它也不适合C++语言.GObject与C++类没有微不足道的关系,即使绑定可用(Gtkmm),也不可能轻易编写"继承自GObject"的C++类并将其暴露给世界.你必须为此写C.

[世界需要的是C++语言的某种扩展,它可以很容易地与GObject交互,有点像Windows上的C++ Cx,但是1)这是一项艰巨的任务,也许可以通过GCC实现插件,2)在Gnome世界中,或者通常在Linux世界中没有动力来实现C++(KDE是一个值得注意的例外).现在我们坚持使用Gtkmm绑定.]