![]() |
|
Модераторы: bsa |
![]()
|
|
| borisbn |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 21 Всего: 135 |
инициализацию (присвоение) ссылки
Добавлено @ 13:19 x1 и то, на что указывает x3 - не инициализированы, а x2 и то, на что указывает x4 - инициализированы значениями по-умолчанию. Для int - нули P.S. а зачем #include <iostream> ? Добавлено @ 13:22
Думаю, не имеет значения, т.к. компилятор по этой ссылке всё равно ничего не пишет, а на этапе исполнения const'ов вообще нет. Предполагаю, что константная, но как это проверить - не имею ни малейшего понятия. Это сообщение отредактировал(а) borisbn - 10.7.2011, 13:24 -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
||||||
|
|||||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 52 Всего: 211 |
верно, еще есть? Добавлено через 1 минуту и 42 секунды да, верно. а iostream от предыдущего примера остался Добавлено через 6 минут и 50 секунд компилятор не пишет, но пользователь вызывает конструктор, сгенерированный компилятором и констатность здесь играет роль. Добавлено через 8 минут и 7 секунд borisbn вышлю ответ в приват. |
|||
|
||||
| Сыроежка |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 127 Регистрация: 24.6.2011 Репутация: 1 Всего: 1 |
Я смотрел код поверхностно. Даже с трудом разглядел, что там запятая, так как у меня заканчивалось время, выделенное на интернет в интернет-кафе. А когда суетишься, что бы успеть напечатать, то уже не вникаешь. |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
Раздел вроде для новичков, а отвечают профессионалы. Ну раз так, то и я тогда отвечу:
1. отличие кардинальное - тернарный оператор можно использовать в константных выражениях. Например, для метапрограммирования (программы этапа компиляции, "Современное программирование на С++", А. Александреску) и условной инициализации констант (в т.ч. и ссылок). 3. массив будет заполнен "словами" (точнее, непробельными символами, которые изначально разделены пробельными) из потока. 6. генерируется конструктор, которому передается ссылка на константный объект |
|||
|
||||
| mes |
|
||||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
при неконстантом конструкторе копий этот код по стандарту не скомпилирутся.. (некоторые версии студии скомпилируют из за своего несоответсвия стандарту ) Это сообщение отредактировал(а) mes - 10.7.2011, 18:25 |
||||
|
|||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 21 Всего: 135 |
bsa, и Вы и azesmcar в личке говорите о
Можете пояснить, каким образом тернарный оператор незаменим в метапрограммировании ? Что вообще имеется в виду ? Спасибо. Кого имели в виду ? Лучше ответить в личку, если не против Добавлено через 1 минуту и 32 секунды mes, ну я так понимаю, что при разкомментированном
? -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
при раскомментированом компилиться не должен.. на этом принципе основана "защита" от копирования auto_ptr (в vector).. Это сообщение отредактировал(а) mes - 10.7.2011, 18:55 |
|||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 21 Всего: 135 |
azesmcar, mes, спасибо. По поводу вопроса
всё стало понятно - и вопрос и ответ -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| volatile |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 16 Всего: 85 |
mes, Почему этот код не скомпилится. По крайней мере здесь компилится. http://liveworkspace.org/code/ea840a0b6f28...2cddb89f87265fe На студии тоже скорей всего скомпилится. ??? Или вы имелли ввиду не скомпилится при расскоментировании? Это сообщение отредактировал(а) volatile - 10.7.2011, 20:10 |
||||
|
|||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
||||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 21 Всего: 135 |
Есть у меня дурацкое свойство - не понимаю общие понятия, люблю разбираться на примерах... поэтому не понял... :( Что именно имеется в виду ? Можно пример на Си++ ? Спасибо. -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| mes |
|
||||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
точно так же как и при раскомментировании.. при константном конструкторе копий все будет компилиться, что и доказывает, что компилятор по умолчанию генерирует константный конструктор копий... Добавлено через 3 минуты и 6 секунд если б генерировался (только) неконстантный, то нескомпилировался (если конечно других нарушений стандарта в этом русле у компилятора нет ) |
||||
|
|||||
| mes |
|
||||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
вобщем помойму лучше сразу поянить, чтоб не вызывать кучу дополнительных вопросов..
по стандарту при пристыковке rvalue (условно говоря временного объекта) к константной ссылке, время жизни объекта увеличивается на время жизни ссылки.. С неконстантной ссылкой попытка подобного присвоения вызовет ошибку.. поэтому возможно так
но нельзя тоже самое с неконстантной :
в студии (помойму 2008) пошли "на встречу" пользователю и убрали несправедливость по отношению к обычной ссылке, позволяя к ней пристыковывать rvalue.. поэтому на ней вторая часть кода компилится "нормально" , что не позволяет проверить какой конструктор копий она генерит по умолчанию.. А также этим создает целый ряд неожидаемых и трудноуловиммых ошибок.. |
||||
|
|||||
| azesmcar |
|
||||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 52 Всего: 211 |
это объявление прототипа функции.
не всегда, бывают варианты. Если один из членов класса имеет неконстантный аргумент конструктора копирования, то и сгенерированный будет неконстантным. Если попытаться самому написать этот конструктор вместо компилятора причины сразу станут очевидны.
http://liveworkspace.org/code/92ed0e2bdbf8...0dd43271d886de0 |
||||||
|
|||||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
||||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |