Когда вызывается конструктор преобразования? (С++)
Конструктор преобразования вызывается в 3 случаях. В каких именно?
Ответы (1 шт):
Автор решения: EOF
→ Ссылка
Допустим есть следующий класс:
class MyIntClass
{
private:
int val_;
public:
MyIntClass(int val) : val_(val) {} // Тот самый конструктор преобразования
};
Вот случаи, когда будет вызван именно этот конструктор:
- При использовании синтаксиса присваивания для инициализации обьекта значением типа
int. Т.е. типа аргумента конструктора преобразования.
MyIntClass obj = 1; // Вызов конструктора преобразования.
- При передаче в функцию значения типа
int, которая ожидает обьект классаMyIntClass.
void func(MyIntClass mic) {}
...
func(1); // Вызов конструктора преобразования для создания обьекта класса MyIntClass.
- Когда функция обьявлена как возвращающая
MyIntClass, но в теле возвращаетint.
MyIntClass func()
{
return 1; // Вызов конструктора преобразования для создания обьекта класса MyIntClass.
}
- Как заметил dIm0n, конструктор преобразования также вызывается при преобразовании
intвMyIntClassиспользуя операторы преобразования.
static_cast<MyIntClass>(1); // Вызов конструктора преобразования для создания обьекта класса MyIntClass.