explicit
Плз,обьясните шо такое "explicit",шо оно делалет,для чего надо и т.д.,потому шо я шо-то не вкуриваю.
Цитата:
Originally posted by rapa
Плз,обьясните шо такое "explicit",шо оно делалет,для чего надо и т.д.,потому шо я шо-то не вкуриваю.
Плз,обьясните шо такое "explicit",шо оно делалет,для чего надо и т.д.,потому шо я шо-то не вкуриваю.
MSDN: An explicit constructor cannot take part in implicit conversions. It can only be used to explicitly construct an object.
Полное описание с примером см. здесь: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclang/html/vcrefExplicit.asp
class My
{
public:
My(){};
My(int b)
{}
explicit My(int* b)
{}
};
void func1(My b)
{
//...
}
Где-то в коде:
int b=2;
func1(b);// это проходит. Создается временный обьект My
func1(&b);// а это - болт. Компилятор матюкается, что конструктор explicit.
//Зато можно так:
func1(My(&b));//все нормально. Явно вызвали конструктор.