
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Вот и я ожидал копии.. Конструктор копирования по умолчанию это не ошибка.
Но Dmitry утверждает что будет выделен новый объект в памяти и вернется указатель типа POINTER_AUTOMATIC а копии не будет.
Каждый по своему понимает причуды MQL)
Ага. Деда Мороза, оказывается не существует.
Ни про какого объекта в памяти я не писал.
Ладно были когда-то были споры - как отличить ссылку от указателя. Но сейчас кажется объект от указателя отличить не получается.
Откуда возьмется копия объекта? Копия указателя - да, но указывающего на тот же самый объект.
У нас массив объектов. У первого элемента этого массива вызывается оператор присваивания, которому передается созданный отдельно объект (хотя, оператор необъявлен). Что по-твоему, после этого должно быть в первом элементе этого массива ? По-моему, объект и должен остаться.
Я к тому это написал, что объявленный явно конструктор копирования ничего бы в этом тесте не изменил.
Как вы очевидного не замечаете..
в элемент массива объектов ложится указатель и в элемент массива указателей ложится объект.. это действительно нормально?
в первом случае в массив идет указатель на объект во втором случае должен сработать конструктор копирования, как эти операции могут быть равнозначны??
Не конструктор копирования, а оператор присваивания, но это мелочи.
В элемент массива объектов - не "ложится укзатель". В элемент массива объектов должен ложиться именно объект.
В первом случае - у тебя именно массив объектов, какие "указатели"-то ?
У нас массив объектов. У первого элемента этого массива вызывается оператор присваивания, которому передается созданный отдельно объект. Что по-твоему, после этого должно быть в первом элементе этого массива ? По-моему, объект и должен остаться.
А... там вообще все плохо))) Массив автоматических указателей, а в него еще впихивают объект создаваемый динамически. Тогда 3 объекта, два из них удалиться автоматически, а один утечет. Если это откомпилируется.
Должно быть так:
A* m_A[2];
и так:
m_A[0] =GetPointer(a);
А в конце вот так:
А... там вообще все плохо))) Массив автоматических указателей, а в него еще впихивают объект создаваемый динамически.
Ну наконец-то!))
В элемент массива объектов должен ложиться именно объект.
В первом случае - у тебя именно массив объектов, какие "указатели"-то ?
Вот и я про то! Почему это РАБОТАЕТ ?!
Ну наконец-то!))
Вот и я про то! Почему это РАБОТАЕТ ?!
Если A объявлен так:
A* m_A[2];
То все норм.
А если так:
A m_A[2];
То это не должно компилироваться. Или баг в компиляторе, или компилятор не обязан всё за всех думать.
То это не должно компилироваться. Или баг в компиляторе, или компилятор не обязан всё за всех думать.
Бинго!