Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
то что они равнозначны
то что они равнозначны
Забудьте вообще про такое присвоение.
Забудьте вообще про такое присвоение.
Так это не мне надо забыть а компилятор не должен позволять так писать.
А на данный момент это не только компилируется но и выполняется без ошибок!
Так это не мне надо забыть а компилятор не должен позволять так писать.
А на данный момент это не только компилируется но и выполняется без ошибок!
Компилятор позволяет потому, что можно, если понимаешь, что делаешь.
class A { public: int iValue; A(){Print("++");} ~A(){Print("--");} }; //...................... A m_A[2]; void OnStart() { A a; m_A[0] =a; m_A[1] = new A(); }
Запустите и посмотрите сколько раз и когда конструктор и деструктор вызываются.
m_A[0]=a; в данном случае равнозначно: m_A[0].iValue=a.iValue;
new A(), в данном слчае, создает новый объект, условно назовем его temp и происходит следующее: m_A[1].iValue=temp.iValue;
Запустите и посмотрите сколько раз и когда конструктор и деструктор вызываются.
m_A[0]=a; в данном случае равнозначно: m_A[0].iValue=a.iValue;
В этом примере не корректна вторая строка
Нельзя в объект сохранять указатель. А компилятор этого не замечает.
В этом примере не корректна вторая строка
Нельзя в объект сохранять указатель. А компилятор этого не замечает.
Запустите и посмотрите сколько раз и когда конструктор и деструктор вызываются.
m_A[0]=a; в данном случае равнозначно: m_A[0].iValue=a.iValue;
new A(), в данном слчае, создает новый объект, условно назовем его temp и происходит следующее: m_A[1].iValue=temp.iValue;
Наверно конструктор 3, деструктор 2. Остальное верно.
и происходит следующее: m_A[1].iValue=temp.iValue;
Это уже 4-ое толкование!))
Тогда почему на выходе требуется вызвать delete? Для объекта temp?
Это уже 4-ое толкование!))
Тогда почему на выходе требуется вызвать delete? Для объекта temp?