2017-02-12 9 views

ответ

2

Ключевое слово new может использоваться только с классами, которые определяют конструктор.

Только конкретный класс может определять конструкторы. Это необязательно для GObjects, поскольку они всегда могут быть созданы с помощью GLib.Object.new.

В данном конкретном случае, GLib.File определяется как абстрактный класс и File.new_for_path ведут себя скорее как завод, который будет выбирать реализацию на основе протокола (т.е. file://, ssh:// ...) и вернуть соответствующий экземпляр.

Класс GLib.DateTime не наследует от GLib.Object и, следовательно, требует создания явного конструктора.

Для структур, может использоваться new, хотя он будет выдавать предупреждение.