Класс в качестве возвращаемого значения
Впервые вижу подобную конструкцию:
class FirstClass
{
public:
FirstClass(int a) : a(a)
{}
protected:
int a;
};
class SecondClass
{
public:
FirstClass foo()
{
}
};
int main()
{
return 0;
}
Будет ли являться класс FirstClass вложенным при таком синтаксисе?
Для чего используется имя класса в качестве возвращаемого значения? Чтобы вернуть экземпляр?
Будет ли вызван конструктор FirstClass при вызове foo? Если да, то откуда возьмется значение?
Как вообще можно использовать это все? Приведите, пожалуйста, пример
Ответы (2 шт):
Ну, для начала такая конструкция выдаст предупреждение:
<source>: In member function 'FirstClass SecondClass::foo()':
<source>: warning: no return statement in function returning non-void [-Wreturn-type]
Ваша функция возвращает объект типа FirstClass по значению(by value)
FirstClass foo()
{
}
По коду не особо понятно что вы хотели сделать, возможно это?
FirstClass foo(int a)
{
return FirstClass(a);
}
class SecondClass
{
public:
FirstClass foo()
{
}
};
Это всего лишь функция foo() в классе SecondClass, которая должна возвращать объект FirstClass. Но по факту, этого не делает. Но если бы делала (с соответствующим return), то раз есть объект — то обязательно есть и его конструктор.