Взято отсюда:
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)); }