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

Не хватает одного конструктора копий - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Преимущества указателя? http://www.cyberforum.ru/cpp-beginners/thread766685.html
Какая разница между? MyObject * object = new MyObject; // и MyObject object; Какие преимущества дает использование указателя на объект с последующим выделением памяти под него по сравнению с просто объектом. (помимо того что использование указателя может давать утечки памяти:D)
C++ оздать класс "измерения" с открытыми данными высота и ширина Создать класс "измерения" с открытыми данными высота и ширина. С помощью наследования создать четыре класса: 1. прямоугольник - для расчёта площади прямоугольника 2. прямоугольный треугольник - для расчёта площади прямоугольного треугольника. 3. цилиндр - для расчёта полной поверхности цилиндра 4. параболоид - для расчёта объёма параболоида. В главной функции программы инициализировать... http://www.cyberforum.ru/cpp-beginners/thread766650.html
Определить класс "Модель" C++
Детали изделия в качестве объектов Определить класс Модель Данные: номер изделия, номер детали, стоимость детали Методы: 1. конструктор 2. деструктор 3. Установка данных Если номер модели больше нуля, инициализируем данные, иначе выводим сообщение об ошибке: "Номер модели должен быть больше нуля!". Если номер детали в диапазоне от нуля до 1000, инициализируем данные, иначе выводим...
C++ создать программу с использованием класса
Написать программу, в которой используется класс myclass для задания значений "а" для объектов "ob1" и "ob2" и вывода на экран этих значений для каждого объекта.
C++ С использованием структуры написать программу http://www.cyberforum.ru/cpp-beginners/thread766647.html
С использованием структуры написать программу, которая: 1. запрашивает у пользователя кол-во видов техники 2. просит ввести название каждого выбранного вида техники 3. просит ввести кол-во покупаемых единиц каждого вида техники 4. просит ввести цену на единицу данного вида техники 5. выводит на экран итоговую информацию в виде: Вы выбрали следующие виды техники: .... (список выбранных...
C++ Почему операторы инкремента действуют по разному для стандартных и нестандартных типов? class my { int i; public: my(int in) :i(in) {} operator int () { return i; } int operator=(int in) { i=in; return i; } подробнее

Показать сообщение отдельно
mzarb
-211 / 7 / 1
Регистрация: 14.01.2013
Сообщений: 141

Не хватает одного конструктора копий - C++

20.01.2013, 00:24. Просмотров 278. Ответов 6
Метки (Все метки)

Вообщем поставил в коде вывод сообщений через cout, чтобы проследить кто и в какой момент запускается, и подсчитал следующий вывод :
  1. В конструкторе копий
  2. В функцие operator=()
  3. В конструкторе копий
  4. В конструкторе копий
  5. В функцие operator=()
  6. В конструкторе копий
Но похоже, что четвертого пункта нету. То есть конструктор копий запускается три раза, а должен 4.
Вот код :
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#include <iostream> 
using namespace std;
 
class Array {
private:
    size_t mysize;
    int *mydata;
public:
    Array(size_t size);
    Array(Array &a);
    Array operator=(Array a);
};
 
Array::Array(size_t size){
    mysize = size;
    mydata = new int [mysize];
}
 
Array::Array(Array &a){
    mysize = a.mysize;
    mydata = new int [mysize];
    for(size_t i=0;i<mysize;i++)
        mydata[i] = a.mydata[i];
    cout << "В конструкторе копий\n";
}
 
Array Array::operator=(Array a){
    if(this != &a){
    mysize = a.mysize;
    delete [] mydata;
    mydata = new int [mysize];
    for(size_t i=0;i<mysize;i++)
        mydata[i] = a.mydata[i];
    }
    cout << "В функцие operator=()\n";
    return *this;
}
 
int main() {
    setlocale(LC_CTYPE, "Russian");
 
    Array a(10);
    Array b(20);
    Array c(30);
    c=b=a;
 
    system("pause");
    return 0;
    
}
P.S. Это тестовый код и я знаю что там должны быть ссылки.
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru