Мне нужно реализовать общую карту. Я решил реализовать его со связанным списком. Я замечаю, что конструктор копирования и оператор присваивания похожи, потому что они создают и копируют связанный список. Так что мне интересно, могу ли я использовать оператор копирования в операторе присваивания или наоборот. У вас есть идея сделать это?Использование конструктора копирования в операторе присваивания для связанного списка
0
A
ответ
0
В большинстве случаев, если вы определили конструктор копирования, он уже используется, когда вы выполняете назначение копии. То есть компилятор неявно использует ваш конструктор копий для определения назначения копии в общем случае.
Пример:
#include<iostream>
using namespace std;
struct copy_me {
int member;
copy_me() : member(0) {};
copy_me(const copy_me &other) : member(other.member) {
cout << "copy const called" << endl;
};
};
int main() {
copy_me me;
copy_me other = me;
return other.member;
}
Выход:
copy const called
Чтобы ответить на ваш конкретный вопрос:
Я думаю, что вы могли бы искать: [Что такое копирование и своп идиома? ] (http://stackoverflow.com/questions/3279543/what-is-the-copy-and-swap-idiom) – NathanOliver
Чтобы использовать икону копирования/свопа, убедитесь, что конструктор копирования находится там, где находится фактический код копирования , Он не должен полагаться или использовать оператор присваивания. Тогда вам также нужен рабочий деструктор. У вас есть эти два, тогда оператор присваивания - это кусок торта, использующий copy/swap, поскольку эта идиома зависит от рабочего конструктора и деструктора. – PaulMcKenzie
Я озадачен тем, почему вы решили реализовать карту, используя связанный список. Если бы я был твоим учителем, ты бы не согласился с этим. – SergeyA