|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
30.09.2014, 11:36 | #11 | |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
Цитата:
Технически отрабатывает explicit constructor. Однако, применительно к примитивным типам - разницы нет никакой. Гораздо интереснее, что происходит при инициализации вида: тип переменная = значение. Язык с++ считается статически не строгой типизации. Однако, С++ не умеет выполнять семантику присвоения теплого к мягкому. Если в правой части находится объект типа1, а в левой части - типа2, то компилятор сначала построит в правой части временный объект типа2, используя explicit constructor. И только затем начнет строить объект в левой части, используя конструктор копии с этим временным объектом в качестве аргумента. При этом срабатывает стандартная оптимизация NRVO, и конструктор копии становится не наблюдаемым. Таким образом: Код:
Код:
Код:
А дальше компилятор видит, что результат выражения идентичен: Код:
Из этого нужно сделать очень важный вывод: Вы не должны закладываться на то, что ваши конструкторы копии будут наблюдаемыми. Пример: http://rextester.com/XBXCI24733 Код:
Компилятор вижалстудии cl скомпилирует такой код без проблем, пропустив факт того что конструктор копии приватный. Таким образом, помимо того, что вы не должны закладываться на видимость конструктора копии, вы ещё должны учитывать, что разные компиляторы оптимизируют по разному. Последний раз редактировалось _Bers; 30.09.2014 в 12:15. |
|
30.09.2014, 11:51 | #12 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
I'm learning to live...
|
|
30.09.2014, 11:53 | #13 |
Санитар
Старожил
Регистрация: 04.10.2008
Сообщений: 2,577
|
От КЭПа:
Код:
|
30.09.2014, 11:59 | #14 |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
кэп ошибся. Подробности читайте выше. Код:
Последний раз редактировалось _Bers; 30.09.2014 в 12:05. |
30.09.2014, 12:04 | #15 | |
Санитар
Старожил
Регистрация: 04.10.2008
Сообщений: 2,577
|
Цитата:
|
|
30.09.2014, 17:15 | #16 |
Пользователь
Регистрация: 25.12.2013
Сообщений: 91
|
а как записать число в строку (3-я задача)?
Разбивать на разряды и записывать каждое в отдельную ячейку символьного массива с помощью itoa()? |
30.09.2014, 17:17 | #17 |
Пользователь
Регистрация: 25.12.2013
Сообщений: 91
|
Начала решать, но не знаю как дальше
Код:
Последний раз редактировалось marenko.lilia; 30.09.2014 в 22:48. |
30.09.2014, 19:45 | #18 |
C++ hater
СтарожилДжуниор
Регистрация: 19.07.2009
Сообщений: 3,333
|
2marenko.lilia
Код:
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay
My other car is cdr. Q: Whats the object-oriented way to become wealthy? A: Inheritance Последний раз редактировалось pproger; 02.10.2014 в 15:28. |
30.09.2014, 22:55 | #19 |
Пользователь
Регистрация: 25.12.2013
Сообщений: 91
|
2pproger - спасибо
|
01.10.2014, 17:09 | #20 | |
Старожил
Регистрация: 02.01.2011
Сообщений: 3,323
|
Решение второй задачи: http://coliru.stacked-crooked.com/a/4454ce729305478a
Код:
Цитата:
Последний раз редактировалось 8Observer8; 01.10.2014 в 17:13. |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Помогите решить 3 задачки | GraverYA | Общие вопросы C/C++ | 24 | 23.09.2014 15:27 |
Задачки на Паскале помогите пожалуйста решить 2 задачки, а то отчислят. плиз | VADOS2009-1 | Помощь студентам | 0 | 03.06.2009 18:11 |
3 задачки,помогите решить | ДашулЬка | Паскаль, Turbo Pascal, PascalABC.NET | 11 | 12.04.2009 17:37 |
Помогите решить 3 задачки... | Goldberg | Паскаль, Turbo Pascal, PascalABC.NET | 8 | 08.11.2008 16:36 |