![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
Antropoid |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 786 Регистрация: 1.6.2006 Где: &Ukraine==Ode ssa Репутация: нет Всего: 16 |
Собственно вопрос озвучен.
-------------------- ![]() Задыхаясь от восторга заниматься чепухой. |
|||
|
||||
DukeCpp |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 27.2.2006 Где: St.Petersburg Репутация: нет Всего: 1 |
Это ключевое слово, стоящее перед конструктором запрещает при создании объекта выполняемое неявно преобразование типа при присваивании другого типа;
|
|||
|
||||
_hunter |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 16 Всего: 98 |
это слово. предположительно из английского языка. на русский переводится как
если подразумевалось keyword из C/C++:
-------------------- Tempora mutantur, et nos mutamur in illis... |
||||
|
|||||
sergejzr |
|
|||
![]() Un salsero ![]() Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 19 Всего: 360 |
Вообще какие либо действия бываю explicit или implicit
implicit означает импликацию действия, то есть его автоматически пораждает другое действие. Например: Дёрнешь за верёвочку - двери откроются. Действие "Дёрнешь за верёвочку" имплицирует "двери откроются". Explicit- значит преднамеренно. То есть можно например explicit открыть дверь без дёргания верёвочек. По этой аналогии, если чтото определяется Explicit значит отключена вся автоматика. |
|||
|
||||
Antropoid |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 786 Регистрация: 1.6.2006 Где: &Ukraine==Ode ssa Репутация: нет Всего: 16 |
Очень путано и ничего не понятно
![]() ![]() -------------------- ![]() Задыхаясь от восторга заниматься чепухой. |
|||
|
||||
Sunr1se |
|
||||||||
Бывалый ![]() Профиль Группа: Участник Сообщений: 193 Регистрация: 1.5.2006 Репутация: 1 Всего: 13 |
Antropoid, ну смотри:
есть у класса конструктор:
Мы хотим создать объект a:
Сначала вызывается конструктор с параметром 42. Конструктор создает объект. Этот объект присваивается объекту a. А вот если мы объявим конструктор вот так:
И попробуем создать объект a так же, как делали это раньше, то ничего не выйдет. Потому что благодаря explicit не произойдет автоматического вызова конструктора. Правильно будет вот так:
--------------------
IRC-канал Винграда |
||||||||
|
|||||||||
Earnest |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 53 Всего: 183 |
Sunr1se, ты не прав в данном случае.
Здесь нет присваивания, это тоже конструирование из int (не надо заблуждаться на счет =), так что все будет работать. Вот если написать:
то все остальное сказанное правильно. Кроме присваивания, переменные int нельзя передавать в функцию, ожидающую Test (а если не explicit - можно), и т.д. -------------------- ... |
||||
|
|||||
Antropoid |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 786 Регистрация: 1.6.2006 Где: &Ukraine==Ode ssa Репутация: нет Всего: 16 |
Ну вот теперь я все понял
![]() ![]() -------------------- ![]() Задыхаясь от восторга заниматься чепухой. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |