Приведение типов
Конструкторы, принимающие один аргумент могут быть использованы в качестве конструктора при приведении типов.
class A {
string s;
A(){} // Конструктор по умолчанию необходимо указать явно
A([[[const|var.html#const]]] string s){
[[[this|this.html]]].s = s;
}
}
void [[[main|main.html]]](){
A a = "a";
print(a.s);
}
В отличие от копирующего конструктора такие конструкторы требуют наличие конструктора по умолчанию.
explicit
Для того чтобы разрешить только явное использование конструктора, необходимо использовать ключевое слово explicit
.
class A {
string s;
A(){}
A([[[const|var.html#const]]] string s) explicit {
[[[this|this.html]]].s = s;
}
}
void [[[main|main.html]]](){
A a = A("a");
// A a = "a"; // Ошибка! Запрещено неявное использование конструктора
print(a.s); // a
}
Last modified: 16 October 2024