Помогаю понять, хорошо ли я понимаю конструктор по умолчанию, конструктор копирования и оператор =C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Помогаю понять, хорошо ли я понимаю конструктор по умолчанию, конструктор копирования и оператор =

Сообщение Anonymous »

Итак, у меня есть этот фрагмент кода на C++:

Код: Выделить всё

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
}
У меня есть вопрос по управлению памятью, в котором я спрашиваю, кто из трех участников; конструктор по умолчанию, конструктор копирования и оператор= должны быть синтезированы в типе T для строк от 1 до 5 ?
Это явно сказано а также, что строка 0 не требует ни одного из этих трех.
Я немного запутался с этими тремя. Пока что это мое предложение:
строка 1 должна использовать конструктор копирования, поскольку мы инициализируем данные, используя уже существующие данные.
строка 2 должна идти с конструктором копирования, потому что я думаю, что мы инициализируем переменную цикла, используя также уже инициализированные данные.
строка 3, я бы сказал, конструктор по умолчанию, потому что нет инициализированных данных из функции void
строка 4, я бы сказал, конструктор по умолчанию по той же причине
строка 5, я понятия не имею, если честно. Я бы сказал, что ни один из них, если мне придется стрелять, потому что это возврат, поэтому его не нужно инициализировать.
Вы видите, что я говорю, я в замешательстве. Я просто хочу понять концепцию памяти, чтобы точно увидеть и ответить на мой вопрос.
Спасибо за помощь

Подробнее здесь: https://stackoverflow.com/questions/792 ... tor-and-op
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»