![]() |
|
![]() ![]() ![]() |
|
O_Nik |
|
||||
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 9.3.2007 Репутация: нет Всего: 1 |
Доброго времени суток.
Вопрос: Не перегружается операция = имеется, например, класс, хочу его копировать, создавая новый объект класса и приравнивая имеющийся к нему
реализация перегрузки:
вместо моей перегрузки (копирования свойств) получается ссылка на объект, т.е. если объявить 2 реализации TBlock и одной приравнять другую, то свойства не скопируются, а просто произойдет ссылка на объект, т.е. a=b, а станет объектом b, а не просто скопирует его свойства как правильно перегрузить = в данном случае? и почему не вводя перегрузки = она уже есть? |
||||
|
|||||
ama_kid |
|
||||
![]() АСУТП-кодер ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1460 Регистрация: 5.3.2007 Где: Москва Репутация: 10 Всего: 95 |
Ну, не знаю, я слабал тестовый пример - и в нем все работает нормально:
Выдается только первый MessageBox с разными заголовком и текстом... Посмотри-поанализируй, в чем принципиальные различия...
Наверное, потому, что по умолчанию для объектов по операции = делается копирование значений со всей памяти, занимаемой объектом-источником в память целевого объекта, а при идентичности типов - это фактическое дублирование, что и наблюдаем... -------------------- самурай без меча подобен самураю с мечом, но только без меча |
||||
|
|||||
O_Nik |
|
|||
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 9.3.2007 Репутация: нет Всего: 1 |
объявляю TBlock через указатель (мне надо через него)
|
|||
|
||||
Vyacheslav |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 47 Всего: 59 |
-------------------- С уважением, Вячеслав Ермолаев |
|||
|
||||
O_Nik |
|
|||
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 9.3.2007 Репутация: нет Всего: 1 |
Спасибо большое, очень признателен
![]() и еще если можно поясните пожалуйста, почему в классе, где есть свойство с определенной операцией перегрузки =, появляется операция перегрузки = для самого класса (а где нет такого свойства - не появляется). например если класс имеет поле AnsiString (с перегруженным=, то и класс имеет перегруженное =)
объясните подалуйста данный механизм наследования, заранее спасибо. |
|||
|
||||
Vyacheslav |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 47 Всего: 59 |
Ничего не понял. Что такое "операция перегрузки"? В С++ нет такого термина. Есть теримин "перегруженная операция" И где в указанных классах есть, по Вашему мнению, свойство, а где нет?
Они совершенно идентичны кроме названия. А вообще бы я бы посоветовал для начала ознакомиться с основами С++. Из них Вы можете узнать, что компилятор обзязан в случае если этого не сделал программист, создать для класса 1.конструктор по умолчанию 2.деструктор 3.конструктор копировния, 4. оператор присваивания -------------------- С уважением, Вячеслав Ермолаев |
|||
|
||||
O_Nik |
|
||||
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 9.3.2007 Репутация: нет Всего: 1 |
:( я не так выразился, глупо конечно :( а тут опечатка, должно быть, что-то вроде этого:
почему в MyClass перегружена операция =, а в MyClass2 - нет? |
||||
|
|||||
Vyacheslav |
|
||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 47 Всего: 59 |
А она есть
![]()
Если Вы свою информацию будете черпать исключительно из подсказчика, то не далеко уйдете. Кстати Ваши два класса
несмотря на разный тип члена класса (class member) по сути опять же ничем не отличаются и оба не имеют никаких свойств ( property ) ![]() -------------------- С уважением, Вячеслав Ермолаев |
||||
|
|||||
O_Nik |
|
|||
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 9.3.2007 Репутация: нет Всего: 1 |
спасибо, в любом случае вы мне помогли
![]() p.s. про свойство property я и не говорил, да и суфлеру не доверял особо, иначе бы спрашивать не стал. |
|||
|
||||
Vyacheslav |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 47 Всего: 59 |
![]() -------------------- С уважением, Вячеслав Ермолаев |
|||
|
||||
O_Nik |
|
|||
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 9.3.2007 Репутация: нет Всего: 1 |
...хорошо элемент класса или поле класса, если так угодно, а не свойство (надеюсь я тут в терминологию попал
![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++ Builder" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C++ Builder | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |