|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
11.06.2012, 10:51 | #1 |
Форумчанин
Регистрация: 18.02.2012
Сообщений: 155
|
Вызовы конструктора копирования
Возник теоретический вопрос: допустим, есть следующий код (члены-данные в разделе public находятся для простоты):
Код:
|
11.06.2012, 11:45 | #2 |
C/C++, Asm
Участник клуба
Регистрация: 02.03.2010
Сообщений: 1,323
|
запретите компилятору оптимизировать и будет вам 4.
|
11.06.2012, 11:56 | #3 |
Форумчанин
Регистрация: 18.02.2012
Сообщений: 155
|
Оптимизация выключена, но все равно 3.
|
11.06.2012, 12:14 | #4 |
C/C++, Asm
Участник клуба
Регистрация: 02.03.2010
Сообщений: 1,323
|
че-то не посмотрел, что вообще происходит
a1 = a a2 = b res = x c = res зы если правильно понимаю, то с оптимизацией должно быть 2 |
11.06.2012, 12:22 | #5 |
Форумчанин
Регистрация: 18.02.2012
Сообщений: 155
|
|
11.06.2012, 12:29 | #6 | |
C/C++, Asm
Участник клуба
Регистрация: 02.03.2010
Сообщений: 1,323
|
ну, я про отимизацию ничего не утверждаю. все зависит от того насколько умный компилятор, самое простое, на мой взляд, что он может сделать, так это не создавать res, соответственно на одно копирование будет меньше.
кстати, Цитата:
Последний раз редактировалось f.hump; 11.06.2012 в 12:46. |
|
11.06.2012, 12:36 | #7 |
Форумчанин
Регистрация: 18.02.2012
Сообщений: 155
|
|
11.06.2012, 12:40 | #8 |
C/C++, Asm
Участник клуба
Регистрация: 02.03.2010
Сообщений: 1,323
|
и что эта строка по вашему мнению делает?
я уже в четвертом посте написал, что происходит: два копирования инициализация целым инициализация референсом |
11.06.2012, 12:53 | #9 |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
Присоединяюсь к вопросу. С выключенными оптимизациями всего три конструктора копии.
Так же, вношу дополнительный вопрос: 1. Пропущена точка с запятой после декларации класса. Ну это фигня. 2. Копирующий конструктор принимает на входе не_константный объект по ссылке. Таким образом: Код:
Но из примера видно, что a+b дают временный объект, который по стандарту является константным Но класс не располагает конструктором копии, принимающий на входе константный объект по ссылке! Таким образом, в коде: Код:
Почему компилятор такое пропускает? Последний раз редактировалось _Bers; 11.06.2012 в 12:55. |
11.06.2012, 12:59 | #10 | ||
C/C++, Asm
Участник клуба
Регистрация: 02.03.2010
Сообщений: 1,323
|
Цитата:
Цитата:
|
||
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Системные вызовы Linux| C | Демик | Помощь студентам | 1 | 16.04.2012 23:29 |
Вызов конструктора для this в констукторе копирования | TrydORgolik | Общие вопросы C/C++ | 1 | 03.09.2011 11:54 |
Макрос для копирования значений из нескольких файлов в один общий с определенным условием копирования | zenner | Microsoft Office Excel | 0 | 21.03.2011 14:48 |
Автоматическое преобразование на основе первого аргумента конструктора в вызов самого конструктора | jennya | Visual C++ | 8 | 03.10.2010 19:03 |
Системные вызовы... | bek@rt | Win Api | 2 | 03.05.2007 02:48 |