我正在关注gobject教程,我发现有一个方法是install_proprties(),它安装了以后可以由set_properties和get_properties使用的属性。我的问题是为什么我们需要install_properties而不是直接在实例结构中有字段,如C ++或Java?
答案 0 :(得分:0)
GObject是一个基于C的面向对象框架;这意味着它必须在较小的语言之上提供功能,而不需要更高级语言的语法糖,例如C ++或Java。
对于属性,GObject必须定义"命名字段"在运行时,允许内省 - 即查询对象类型的功能的能力 - 以及通用访问和更改通知。这些命名字段不一定映射到实例结构中的字段:它们可以是只读的或只写的;它们可以在飞行中计算;它们只能在施工时使用。
其他语言也可能具有这些功能,但它们通常通过语言自己的语法公开;这在GObject / C中不会发生。