Объект класса для другого типа данных? - PullRequest
1 голос
/ 15 марта 2011

Можно ли преобразовать объект класса, например, в int, double, char и т. Д. Это называется неявным или явным преобразованием?

class MyClass
{
int x;
};

int main()
{
    MyClass MyObject; //convert my object to int
}

Ответы [ 2 ]

1 голос
/ 15 марта 2011

Создание оператора приведения:

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
}
0 голосов
/ 15 марта 2011

Конструктор также может функционировать как оператор приведения, идущий в другую сторону.

class Foo {
public:
    Foo(const Bar &)   // Bar -> Foo
};

class Bar {
public:
    Bar(const Foo &)
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...