Copy and swap
Назначение
Решаемые задачи
Общая реализация на языке C++
template<typename T>
class Array {
public:
Array(unsigned size) : data{ new T[size] }, size{ size } { }
~Array() { delete [] data; }
Array(const Array& array) : Array{ array.size } {
for (unsigned i {}; i < size; ++i)
data[i] = array.data[i];
}
Array <T>& operator=(const Array& other) {
Array <T> copy{ other };
swap(copy);
return *this;
}
T & operator[](unsigned index)
{
return data[index];
}
void swap(Array & other) noexcept {
std::swap(data, other.data); // меняются два указателя
std::swap(size, other.size); // меняются размеры
}
unsigned getSize() const
{
return size;
}
private:
T * data;
unsigned size;
};Last updated