Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

explicit

1 view
Skip to first unread message

daniil kosenko

unread,
Dec 17, 2007, 4:36:08 AM12/17/07
to
Hi All,

Встретил в чужом коде перед описанием конструктора слово explicit . Полез в
MSDN, но не понял перевода. Для чего вообще нужно это слово?
Как я понял из перевода, приведенный в MSDN код, который использует explicit,
должен скомпилироваться с ошибкой.
Как эти слова перед конструктором называются (вряд ли "модификаторы доступа") и
какие еще есть такие слова?
Если есть ресурс на русском, прошу кинуть ссылку.

Bye .
Даниил.

Oleg Bekhter

unread,
Dec 23, 2007, 5:15:12 AM12/23/07
to
Hi,

> Встретил в чужом коде перед описанием конструктора слово explicit . Полез в
> MSDN, но не понял перевода. Для чего вообще нужно это слово?
>  Как я понял из перевода, приведенный в MSDN код, который использует explicit,
> должен скомпилироваться с ошибкой.
Если просто, то объяснить можно так.
explicit функцию можно вызвать только со списком аргументов, которые
задекларированы.
Hапример есть такая:
void foo( const std::string &str );

Ее можно вызвать так:
std::string str = "My string";
foo( str ); // OK
foo( "My string" ); // Тоже OK - есть такая конверсия

В случае
explicit void foo( const std::string &str );

std::string str = "My string";
foo( str ); // Тут OK
foo( "My string" ); // Error - уже низзззя

--
Best regards,
Oleg Bekhter

daniil kosenko

unread,
Dec 23, 2007, 2:27:54 PM12/23/07
to
//Hi Oleg, //

>> Встретил в чужом коде перед описанием конструктора слово explicit . Полез

[...Поскипано...]
U> foo( "My string" ); // Error - уже низзззя

Спасибо за ответ, правда не все понял, буду дальше разбираться.

Bye .
Даниил.

0 new messages