Форум программистов, компьютерный форум CyberForum.ru

Перегрузка операторов С++ - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Подскажите ,как осуществить поиск максимального элемента массива http://www.cyberforum.ru/cpp-beginners/thread1003084.html
Как считать информацию с файла? что тут не так? Что надо писать в текстовом документе? #include <iostream> #include <conio.h> #include <fstream> using namespace std; int main()
C++ Форматированный вывод с использованием printf() Как сделать, чтобы printf("%3.3f", peremennaya); выводила именно 3.3 знака, даже если число хранимой в этой переменной такого количества знаков не имеет? Гугл мне не помогает( http://www.cyberforum.ru/cpp-beginners/thread1003071.html
Задана матрицы целых чисел. Удалить из неё К-ю строку C++
Доброго времени суток. Помогите разобраться. Заранее спасибо.
C++ с++ как открыть exe файл в программе ?
как сделать ? может кто-то знает?
C++ матрица по спирали http://www.cyberforum.ru/cpp-beginners/thread1003040.html
есть матрица с (0,0) элемента по спирали , а нужно середины for (int j = 0, m = a; j <= m; j ++, m --){ for (int i = j; i < m; i ++){ Console.Write("{0} ", myArr); } for (int i = j + 1; i < m; i ++){ Console.Write("{0} ", myArr); } for (int i = j + 1; i < m;...
C++ Проверить пересечение прямоугольников как проверить пересекаются ли прямоугольники? Для ясности скинул весь свой класс. Прямоугольники задаются только 2-мя вершинами, рисую через dc.Rect(), поэтому проверят параллельны ли они к горизонтали не нужно. Для ясности скинул весь свой класс Rect. Благодарю. class Point { private: int itX,itY; public: inline void SetX(int x) { itX = x; } inline void SetY(int y) { itY = y; }... подробнее

Показать сообщение отдельно
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
10.11.2013, 03:33     Перегрузка операторов С++
Цитата Сообщение от Katran1990 Посмотреть сообщение
В данной программе не могу понять для какой цели служит этот конструктор:
Это конструктор копий. Допустим, есть класс представляющий массив целых чисел
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
class Array_of_int
{
private:
  int* data_;
  int size_;
  //...
 
public:
  explicit Array_of_int(int n)
  {
    data_ = new int [n];
    size_ = n;
    //...
  }
 
  ~Array_of_int()
  {
    delete[] data_;
  }
 
  const int* data() const
  {
    return data_;
  }
};
Если выполнить данный код
C++
1
2
3
4
5
6
7
8
#include <cassert>
//...
int main()
{
  Array_of_int a1(10);
  Array_of_int a2(a1);
  assert(a1.data() != a2.data());
}
то объект a2 ,будет представлять собой точную копию объекта a1, т.е. значения всех полей класса a1 будут скопированы в a2 включая значения указателей. Если всё оставить так, как есть, то a1 и a2 будут использовать один и тот же внутренний массив. Для того чтобы избежать подобных вещей и пишется конструктор копий, в данном случае он мог бы выглядеть так
C++
1
2
3
4
5
6
Array_of_int(const Array_of_int& rhs)
{
  data_ = new int [rhs.size_];
  std::copy_n(rhs.data_, rhs.size_, data_);
  size_ = rhs.size_;
}
 
Текущее время: 09:45. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru