Код: Выделить всё
T create (size_t n);
bool condition_one(T t);
bool condition_two(const T &t);
void modify(T &t);
T generate(size_t n){
T a(1); //line 0
T b = create(n); //line 1
while (!condition_one(b)) { //line 2
modify(b); //line 3
if (condition_two(b)) {. //line 4
break;
}
}
return b; //line 5
}
Это явно сказано а также, что строка 0 не требует ни одного из этих трех.
Я немного запутался с этими тремя. Пока что это мое предложение:
строка 1 должна использовать конструктор копирования, поскольку мы инициализируем данные, используя уже существующие данные.
строка 2 должна идти с конструктором копирования, потому что я думаю, что мы инициализируем переменную цикла, используя также уже инициализированные данные.
строка 3, я бы сказал, конструктор по умолчанию, потому что нет инициализированных данных из функции void
строка 4, я бы сказал, конструктор по умолчанию по той же причине
строка 5, я понятия не имею, если честно. Я бы сказал, что ни один из них, если мне придется стрелять, потому что это возврат, поэтому его не нужно инициализировать.
Вы видите, что я говорю, я в замешательстве. Я просто хочу понять концепцию памяти, чтобы точно увидеть и ответить на мой вопрос.
Спасибо за помощь
Подробнее здесь: https://stackoverflow.com/questions/792 ... tor-and-op