именованные конструкторы - вопрос
От: The_Thing Россия
Дата: 29.09.09 08:45
Оценка: :)
Взято отсюда: http://faqs.org.ru/progr/c_cpp/cpp_lite2.htm
Абзац: [10.8] Что такое "именованный конструктор" ("Named Constructor Idiom")?

В приведенном там коде (привожу ниже) используется запись

inline Point Point::rectangular(float x, float y)
    { return Point(x, y); }


Но вот вопрос: разве не должен объект быть удалён за пределами области видимости. Как я понимаю, хоть функция встроенная правила С++ никто не отменял.
Если я правильно рассуждаю, то вопрос: можно ли создать статический объект используя именованные конструкторы?

 #include <math.h>              // Для sin() и cos()

    class Point {
    public:
      static Point rectangular(float x, float y);      // Прямоугольные координаты
      static Point polar(float radius, float angle);   // Полярные координаты
      // Эти статические члены называются "именованными конструкторами"
      // ...
    private:
      Point(float x, float y);     // Прямоугольные координаты
      float x_, y_;
    };

    inline Point::Point(float x, float y)
    : x_(x), y_(y) { }

    inline Point Point::rectangular(float x, float y)
    { return Point(x, y); }

    inline Point Point::polar(float radius, float angle)
    { return Point(radius*cos(angle), radius*sin(angle)); }
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.