В чем разница между конструктором С++ и объявлением процедуры создания Eiffels?
Какая ценность в возможности иметь несколько функций-конструкторов для класса? Или есть какая-то другая польза от Эйфеля "создать"?
Спасибо
В чем разница между конструктором С++ и объявлением процедуры создания Eiffels?
Какая ценность в возможности иметь несколько функций-конструкторов для класса? Или есть какая-то другая польза от Эйфеля "создать"?
Спасибо
В C++ вы можете перегружать конструкторы, поэтому вы также можете определить несколько конструкторов.
Наличие процедур конструктора, как в EIFFEL, имеет то преимущество, что вы можете определять разные конструкторы, имеющие одинаковую сигнатуру (т.е. одинаковое количество и тип аргументов).
Просто представьте класс Triangle
: вы можете построить треугольник, задав длины трех сторон (три значения с плавающей запятой) или задав две стороны и окружающий их угол (также три значения с плавающей запятой).
В C++ вам нужно будет определить дополнительный параметр (например, значение перечисления для «режима построения»), в EIFFEL вы можете просто определить две процедуры построения с разными именами.
static
с другим именем, которая будет создавать объекты так, как вы хотите, так же, как create
Эйфеля.
- person Seth Carnegie; 13.01.2012
static
могли возвращать только ссылки на динамически размещенные объекты (или указатели). Конечно, вы можете использовать интеллектуальные указатели и т. д. Но при сравнении языковых возможностей не имеет смысла говорить, что одна особенность языка A «это то же самое», что и некоторые другие. особенность языка B, просто потому, что вы можете реализовать дополнительные функции для получения того же эффекта. С таким же успехом можно утверждать, что struct
в C более или менее то же самое, что class
в C++, только потому, что вы можете делать ООП и в C...
- person MartinStettner; 13.01.2012