logo
volkov / C++ / Бьерн Страуструп-Справочное руководство по С++

R.12.3.1 Преобразование с помощью конструктора

Конструктор, имеющий единственный параметр, задает преобразование

типа своего фактического параметра в тип его класса, например:

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))

// не применяется