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

Почему конструктор вызывается при присвоении объекта другому объекту - C++

Восстановить пароль Регистрация
 
Lynatik001
 Аватар для Lynatik001
34 / 28 / 2
Регистрация: 28.09.2012
Сообщений: 560
31.03.2014, 02:30     Почему конструктор вызывается при присвоении объекта другому объекту #1
оператор+ выполняется нормально, но когда уже переменная в sum, на след шаге она вызывает конструктор, ибо у меня в примере 9 выходит. А в переменной лежит 45(конструктор выполняет ф-ю возведения в многочлен)
Как это понять? Не знал что присвоение вызывает конструктора
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
    mch::mch()
    {
        str = 0;
    }
    mch::mch(int tmp){
        str = 0;
        for(int i=0;i<=tmp;i++)
        {
            this->str += i;
        }
    }
 
mch mch::operator+(mch &R){
        int as= str + R.str;
         return str + R.str;
    }
 
    mch k1(2),k2(3),sum,minus,mno;
    sum = k1 + k2;
    cout << "k1 + k2 =  " << sum.str << endl;
Добавлено через 27 минут
на С# точно такой же пример сделал, и нормально работает... А на С++ что за)))
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.03.2014, 02:30     Почему конструктор вызывается при присвоении объекта другому объекту
Посмотрите здесь:

C++ ПОчему не вызывается конструктор копирования? Должен вызываться!
как присвоить значения из одного объекта другому объекту C++
Почему допустимо создавать объект по другому объекту, но нельзя присваивать уже созданный объект, другому созданному объекту? C++
Почему конструктор вызывается повторно при преобразовании типов? C++
Почему не вызывается конструктор копии? C++
C++ При создании класса конструктор вызывается 2 раза, затем вызывается деструктор о_О
C++ Почему для временного безымянного объекта не вызывается оператор ()?
В какой момент вызывается конструктор для глобального объекта, использующего статическое выделение памяти? C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
31.03.2014, 02:37     Почему конструктор вызывается при присвоении объекта другому объекту #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Конструктор должен вызываться при возврате из operator+. return str + R.str, а вернуться должен объект mch.
Конструктор с одним параметром - в качестве функции неявного преобразования.
Yandex
Объявления
31.03.2014, 02:37     Почему конструктор вызывается при присвоении объекта другому объекту
Ответ Создать тему
Опции темы

Текущее время: 05:13. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru