|
|
||||||
Как работает компилятор при создании объекта25.10.2013, 13:06. Показов 3932. Ответов 36
Метки нет (Все метки)
Таки думал разобрался как работает конструктор копирования, а выходит, что нет.
Вопрост состоит в следующем. Имеем код представляющий собой класс для хранения указателей на строки которые хранятся в другом классе(суть в том что бы не хранить в памяти несколько копия строк если они идентичны): Кликните здесь для просмотра всего текста
Когда я в первый раз читал Лафоре этот код отлично компилился(в то время я работал в VS 6.0). В данный момент я программирую в среде Code::Blocks и в ней данный код не компилится. Ругается на неоднозначное определение конструктора. Вот отсюда и вопрос: А что собственно происходит при создании объекта? Когда запускается конструктор копирования, а когда конструктор с одним аргументом? Все это время я полагал, что сперва запускается конструктор копирования, а вот он в свою очередь вызывает конструктор с одним аргументом. Таки все же я не прав или как? Просвятите пожайлуста. Добавлено через 5 минут Странно. Конструктор копирования в VS не вызывается...
0
|
||||||
| 25.10.2013, 13:06 | |
|
Ответы с готовыми решениями:
36
Компилятор выдает ошибку при создании списка При объявлении объекта компилятор требует ';' При создании статического объекта получают различные адреса при различных обращениях |
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
||
| 25.10.2013, 14:24 | ||
Сообщение было отмечено как решение
Решение
Ilot, Почитайте стандарт.
8.5 Initializers
Если позволяет английский более подробно можно прочесть тут: http://stackoverflow.com/quest... itializati Добавлено через 21 секунду ninja2, Оператор присваивания тут не зовется.
3
|
||
|
|
|||||||||
| 25.10.2013, 14:26 | |||||||||
ForEveR, это конечно все верно, но
А флаг -fno-elide-constructors лишь это запрещает.
1
|
|||||||||
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
||
| 25.10.2013, 14:27 | ||
Сообщение было отмечено как решение
Решение
3
|
||
|
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
|
||
| 25.10.2013, 14:31 | ||
.
0
|
||
|
|
|||||||||||||||||
| 25.10.2013, 14:49 [ТС] | |||||||||||||||||
|
ForEveR, castaway, все парни разобрался. Вы абсолютно правы. Таки у меня там еще одна строчка была в коде:
.Добавлено через 9 минут Таки идем дальше. Мы не выяснили самое главное. Почему в исходном коде компилятор ругается на неоднозначность. Может ли это быть связанно, что он не распознает:
В таком виде все прекрасно компилится:
1
|
|||||||||||||||||
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
| 25.10.2013, 14:51 | |
|
Ilot, Я уже объяснил в чем проблема. Создается временный объект, который после уходит в конструктор копирования, НО временный объект не может быть привязан к неконстантной ссылке, однако MSVC как расширение позволяет это, чем вообщем-то нарушает стандарт С++. Константную ссылку он принимать должен, чтобы не было таких ситуаций.
2
|
|
|
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
|
||||||
| 25.10.2013, 14:54 | ||||||
|
ForEveR, а я почемуто до этой темы всегда считал что если мы так пишем
0
|
||||||
|
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
|
|
| 25.10.2013, 14:57 | |
|
Отак как то A a(operator=(A( int ))); , Ну если есть оператор = то полюбом должна же функция вызваться operator=() ??? Почему тут происходит не понятно как?
0
|
|
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
||||||
| 25.10.2013, 15:00 | ||||||
|
ninja2, Читаем выше.
1
|
||||||
|
|
||||||||||||
| 25.10.2013, 15:01 [ТС] | ||||||||||||
0
|
||||||||||||
|
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
|
|||
| 25.10.2013, 15:08 | |||
|
Добавлено через 1 минуту Добавлено через 2 минуты Ilot, Ты своим постом всю мою цепочку знаний разломал.
0
|
|||
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
||
| 25.10.2013, 15:11 | ||
|
Ilot,
1
|
||
|
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
|
||
| 25.10.2013, 15:15 | ||
|
0
|
||
|
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
|
|
| 25.10.2013, 15:53 | |
|
castaway, Ну да.
0
|
|
| 25.10.2013, 15:53 | |
|
Вылет программы при создании объекта
Undefined reference при создании объекта
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Эксперимент с картинкой-обложкой на CodinGame
Adler 10.07.2026
Решил на днях провести эксперимент. У меня есть аккаунт на CodinGame, ТОП-3 по РФ среди 2200 участников (в разделе соревнования по программированию ИИ-ботов). Там есть обложка, куда можно влепить. . .
|
После бана на Пикабу не работает авторизация аккаунта с Яндекса.
Hrethgir 09.07.2026
В частности https:/ / auto. ru/ logbook/ zapret-na-vozhdenie-posle-65-let_1cf28789-07b4-4c75-a2f7-4cd4edf9deeb тут хотел оставить комментарий такой
Зрите в корень - монополизация на разработку программ. . .
|
GitDOS: Когда я решил скрестить MS-DOS, GitHub и Claude
MaGz GoLd 08.07.2026
Привет, Киберфорум! Хочу поделиться своим проектом, который, надеюсь, вас заинтересует. GitDOS — это веб-приложение, которое позволяет запускать DOS в браузере с тремя крутыми фичами: диски живут в. . .
|
Учебный мини "цифровой двойник" = (Сервер = Java + Flask_питон )+(3D = Гугловскаая 4T nvideo + google colab) +( WMS = Odoo на Docker)
anaschu 07.07.2026
Увидел в требованиях к вакансии создателя имитационных моделей связку (REst + Api + WMS + Anylogic + питон + 3D Nvideo), и решил посмотреть, что это такое. Из этого всего я работал более менее. . .
|
|
Море в объективе
kumehtar 06.07.2026
Хотел написать много проникновенных слов, но передумал.
Оно само - говорит.
Кто слышит тот слышит.
|
Doom для терминала без стрельбы и монстров. 3D Raycasting на ascii.
dcc0 05.07.2026
Попросил нейронную сеть deepai. org написать рейкастинг 3D с библиотекой ncurses для Linux. Чтобы можно было
ходить на стрелочки. Чтобы стены были отрисованы символами. Справилась.
Первый вариант. . .
|
Установка статуса документа по условию
Maks 05.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "НарядПутевка" разработанного в КА2.
Задача: в табличной части "Материалы" документа при записи автоматически устанавливать статус. . .
|
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет.
Но обычно это 50 лет и более.
Наверное, закисление почвы происходит сезонно в средней. . .
|