Можно ли преобразовать объект класса, например, в int, double, char и т. Д. Это называется неявным или явным преобразованием?
class MyClass { int x; }; int main() { MyClass MyObject; //convert my object to int }
Создание оператора приведения:
class Foo { public: operator int() const { return 1; } }; class Bar { public: operator Foo() const { return Foo(); } }; int main() { Foo f; Bar b; int i1 = f; // implicit, just one conversion int i2 = b; // not valid int i3 = static_cast<Foo>(b); // Convert b to Foo explicitly, Foo to int implicitly }
Конструктор также может функционировать как оператор приведения, идущий в другую сторону.
class Foo { public: Foo(const Bar &) // Bar -> Foo }; class Bar { public: Bar(const Foo &) };