Пусть Point
- класс, экземпляры которого могут быть явно лишены a wxPoint
:
class Point{
private:
int x;
int y;
public:
explicit operator wxPoint() const
{
return wxPoint(x, y);
}
// More stuff
}
У меня есть функция, которая возвращает ссылку на объект типа Point
. Заголовок такой функции:
const Point& GetPoint();
Мой вопрос: безопасно ли определить следующую функцию Foo
?
const wxPoint& Foo() const{
return (wxPoint&) GetPoint();
}
Сначала я реализовал Foo
с помощью return (wxPoint) GetPoint();
, но создал новый (локальный) объект, и поэтому запускается полезное предупреждение. Показанный здесь код компилируется без предупреждений.
Вся информация, которую я нашел в этом типе кастинга, относится к унаследованным классам, что здесь не так.
Объяснение того, что именно происходит, когда бросать ссылку таким образом, было бы действительно оценено.