Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: для чего нужно implisit и explisit  (Прочитано 5071 раз)
0 Пользователей и 1 Гость смотрят эту тему.
shuttle
Гость
« : 26-04-2006 13:26 » 

для чего нужно implisit и explisit. если есть возмлжность покажите на примере.
Записан
Михалыч
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #1 : 26-04-2006 15:50 » 

Declaring a constructor explicit will prevent the compiler from using it for type conversion
behind your back.
The new C++ standard gives you the ability to restrict the compiler and forbid such conversions. You do that by
declaring a constructor explicit:
class Rational
{
public:
    explicit Rational (int a = 0, int b = 1 ) : m(a), n(b) {}
    ...
};
The explicit keyword tells the compiler that you oppose usage of this constructor as a conversion
constructor.
« Последнее редактирование: 26-04-2006 15:51 от Михалыч » Записан

Поживем - увидим... Доживем - узнаем... Выживу - учту  Улыбаюсь
LP
Помогающий

ru
Offline Offline

« Ответ #2 : 28-04-2006 19:03 » 

На всякий случай еще раз и по-русски. Улыбаюсь
Цитата
для чего нужно implisit и explisit. если есть возмлжность покажите на примере.
Откуда ты взял "implisit"? Такого ключевого слова в С++ нету.

explicit подавляет неявные преобразования, которые могут выполняться конструктором преобразования (конструктором, который может быть вызван с одним аргументом).
Например,
Код:
class A
{
int i_;
public:
A():i_(0){}
A(int i):i_(i){}
};

void func(A a)
{
}

int main()
{
func(1);
return 0;
}
При вызове func(1); происходит неявное преобразование 1 в объект класса A, посредством конструктора A(int i). Если к этому конструктору приписать explicit, то компилятор выдаст ошибку.
Записан

Если эта надпись уменьшается, значит ваш монитор уносят
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines