|
|
Конструктор, имеющий единственный параметр, задает преобразование типа своего фактического параметра в тип его класса, например:
class X { // ... public: X(int); X(const char*, int = 0); }; void f(X arg) { X a = 1; // a = X(1); X b = "Jessie"; // b = X("Jessie",0) a = 2; // a = X(2) f(3); // f(X(3)) }
Если в классе X нет конструктора, который допускает заданный тип, не делается попытки найти какой-либо конструктор другого класса или функцию преобразования для приведения заданного значения в значение типа,допустимого для конструктора класса X, например:
class X { /* ... */ X(int); }; class Y { /* ... */ Y(X); }; Y a = 1; // недопустимо: преобразование Y(X(1)) // не применяется
| |