Прошу прошения за ламерский вопрос, но кто ни будь может привести пример конструктора, который если он объявлен как explicit, то код, где он вызывается, не компилируется, а если не explicit, то компилируется. Тесть
Class1
{
explicit Class1(some)
{
…..
}
}
….
Class1 ( some ) ;//компиляется при отсутствии у конструктора модификатора explicit, и компилится в ином случае
Hello, !
You wrote on Sun, 03 Aug 2003 15:21:25 GMT:
> Прошу прошения за ламерский вопрос, но кто ни будь может привести пример
> конструктора, который если он объявлен как explicit, то код, где он
> вызывается, не компилируется, а если не explicit, то компилируется. Тесть
> Class1
> {
> explicit Class1(some)
> {
> …..
> }
> }
> ….
> Class1 ( some ) ;//компиляется при отсутствии у конструктора
> модификатора explicit, и компилится в ином случае
class _a
{
public:
explicit _a(int)
};
void foo()
{
_a a = 10; //облом
_a a(10); //нормально
}
With best regards, Alex Shirshov.
Posted via RSDN NNTP Server 1.7 beta
Здравствуйте, Аноним, Вы писали:
struct test
{
int n_;
test(int n) : n_(n) {}
};
void f(test t)
{
}
int main(void)
{
test t(10);
f(t);
f(20);//(*)
return 0;
}
Если конструктор test объявить как explicit, то строка (*) вызовет ошибку.