![]() |
Модераторы: bsa |
![]() ![]() ![]() |
|
Lotles |
|
||||||||
Новичок Профиль Группа: Участник Сообщений: 46 Регистрация: 6.4.2010 Репутация: нет Всего: нет |
Вот Fraction.h
Я не пойму почему в
вызывается
У нас f2 имеет тип ProperFraction, а в аргументе operator+ Fraction Это сообщение отредактировал(а) Lotles - 1.11.2010, 17:51 |
||||||||
|
|||||||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
Lotles, а для чего у тебя еще определен оператор +? Я заметил только для Fraction. Вот поэтому он и вызывается. Если бы ты его определил для ProperFraction, то было бы по-другому...
|
|||
|
||||
Lotles |
|
|||
Новичок Профиль Группа: Участник Сообщений: 46 Регистрация: 6.4.2010 Репутация: нет Всего: нет |
Это получается и операторы не наследуются, ппс в учебнике написано только конструкторы не наследуются
bsa двумя строками все мои вопросы снёс, и всё из-за элементарного непонимания Это сообщение отредактировал(а) Lotles - 3.11.2010, 07:38 |
|||
|
||||
Lotles |
|
||||||
Новичок Профиль Группа: Участник Сообщений: 46 Регистрация: 6.4.2010 Репутация: нет Всего: нет |
А нет, остался 1 вопрос
Вообще это не мой вопрос, случайно на форуме увидел и тоже стало интересно, правда на него не ответили
Почему когда в функцию add передаем other не вызывается конструктор копирования(ответ: потому что other- ссылка) А если так посмотреть, то в аргументе конструктора копирования
тоже сылка Где то в книге читал, что вроде в конструкторе копирования аргумент является объектом, но какой это объект, если мы передаем указатель, он(src-аргумент) потом
превращается в объект(а точнее в данные, находящиеся по адресу) Так почему когда в аргумент передаешь ссылку на объект не вызывается конструктор копирования ? Это сообщение отредактировал(а) Lotles - 3.11.2010, 08:50 |
||||||
|
|||||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
не ссылка вызывает конструктор копирования, а к.к. принимает ссылку.. к.к. вызовется если передадите не ссылку.. но не потому что передаете не ссылку, а потому что требуется создание копии при такой конструкции.. Добавлено через 1 минуту и 23 секунды "не ссылка" в данном контексте это объект пользовательского типа... |
|||
|
||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 35 Всего: 223 |
Наоборот - наследуются. Если бы не наследовались, то получилась бы ошибка на этапе компиляции.
И вообще - любой конструктор (в том числе и конструктор копирования) так просто (сам по себе) не вызывается, его вызов - это неотъемлемая часть создания нового объекта. Конструктор копирования вызывается как часть создания объекта - копии другого объекта. При передаче параметра (объекта) по значению (т.е. без всяких ссылок или указателей) как раз и создается копия |
|||
|
||||
Lotles |
|
||||||
Новичок Профиль Группа: Участник Сообщений: 46 Регистрация: 6.4.2010 Репутация: нет Всего: нет |
А зачем вообще делается копия, есть один fract , зачем еще делать ? А this в конструкторе копирования чем является ? А что вызвало
Конструктор копирования вызывается в следующих случаях: 1) Когда объект передается в качестве возвращаемого значения функции 2) Когда один объект используется другого 3) Когда объект стоит в аргументе Не один случай не подходит Это сообщение отредактировал(а) Lotles - 4.11.2010, 13:53 |
||||||
|
|||||||
xvr |
|
||||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 35 Всего: 223 |
Как это не подходит, а п1?
|
||||||
|
|||||||
![]() ![]() ![]() |
Правила форума "C/C++: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |