Конструктор-преобразователь
Определение:
Конструктор-преобразователь – это конструктор, который можно вызвать с одним аргументом. Конструктор может иметь более одного параметра, но все они должны иметь значения по умолчанию.
Синтаксис:
имя класса(другой тип);
имя класса(const другой тип&);
Задача: Инициализировать все поля, используя для установки начального состояния значение другого типа.
Назначение: Используется для преобразования в определяемый тип значения другого типа. Компилятор может вызывать его самостоятельно, если аргумент функции или операции имеет тип
другой тип, а параметр – тип
имя класса.
Замечания:
- Если конструктор с одним аргументом не должен использоваться неявно для преобразования, перед ним нужно написать explicit (явный).
Примеры:
class String {
public:
String(const char *s=""); //
...
};
void fun(const String &s);
int main()
{
String a("ABC"); //
char s[]="ABCDE";
fun(s); //
//
a=s; //
//
a=String(s); //
a=(String)s; //
a=static_cast<String>(s); //
}
class Stack {
public:
explicit Stack(int); //
...
};
void fun(Stack x);
int main()
{
Stack a(100);
...
fun(100); //
fun(Stack(100)); //
a=Stack(100); //
a=100; //
a=(Stack)100; //
a=static_cast<Stack>(100); //
}