ݺߣ

ݺߣShare a Scribd company logo
Программирование на языке C++
Лекция 3
Класс массива
Александр Смаль
1/4
Поля и конструкторы
struct IntArray {
explicit IntArray(size_t size)
: size_(size), data_(new int[size ]) {
for (size_t i = 0; i != size_; ++i)
data_[i] = 0;
}
IntArray(IntArray const& a)
: size_(a.size_), data_(new int[size_ ]) {
for (size_t i = 0; i != size_; ++i)
data_[i] = a.data_[i];
}
...
private:
size_t size_;
int * data_;
};
2/4
Деструктор, оператор присваивания и swap
~IntArray () {
delete [] data_;
}
IntArray & operator =( IntArray const& a) {
if (this != &a)
IntArray(a). swap (* this );
return *this;
}
void swap(IntArray & a) {
std:: swap(size_ , a.size_ );
std:: swap(data_ , a.data_ );
}
3/4
Методы
size_t size () const { return size_; }
int get(size_t i) const {
return data_[i];
}
int & get(size_t i) {
return data_[i];
}
void resize(size_t nsize) {
IntArray t(nsize );
size_t n = nsize > size_ ? size_ : nsize;
for (size_t i = 0; i != n; ++i)
t.data_[i] = data_[i];
swap(t);
}
4/4

More Related Content

3.8 Класс массива

  • 1. Программирование на языке C++ Лекция 3 Класс массива Александр Смаль 1/4
  • 2. Поля и конструкторы struct IntArray { explicit IntArray(size_t size) : size_(size), data_(new int[size ]) { for (size_t i = 0; i != size_; ++i) data_[i] = 0; } IntArray(IntArray const& a) : size_(a.size_), data_(new int[size_ ]) { for (size_t i = 0; i != size_; ++i) data_[i] = a.data_[i]; } ... private: size_t size_; int * data_; }; 2/4
  • 3. Деструктор, оператор присваивания и swap ~IntArray () { delete [] data_; } IntArray & operator =( IntArray const& a) { if (this != &a) IntArray(a). swap (* this ); return *this; } void swap(IntArray & a) { std:: swap(size_ , a.size_ ); std:: swap(data_ , a.data_ ); } 3/4
  • 4. Методы size_t size () const { return size_; } int get(size_t i) const { return data_[i]; } int & get(size_t i) { return data_[i]; } void resize(size_t nsize) { IntArray t(nsize ); size_t n = nsize > size_ ? size_ : nsize; for (size_t i = 0; i != n; ++i) t.data_[i] = data_[i]; swap(t); } 4/4