Interesuje mnie czy istnieje możliwość nie jawnego rzutowania z typu podstawowego na klasę (coś na modle polimorfizmu). Istotna jest nie jawność, da się coś takiego osiągnąć? Jak tak to jak?
pozdrawiam,
Frozen
Interesuje mnie czy istnieje możliwość nie jawnego rzutowania z typu podstawowego na klasę (coś na modle polimorfizmu). Istotna jest nie jawność, da się coś takiego osiągnąć? Jak tak to jak?
pozdrawiam,
Frozen
Każdy konstruktor z jednym parametrem typu podstawowego (ale nie tylko) może być użyty do rzutowania o ile nie oznaczono go jako explicit.
class X
{
public:
X(int x) {}
};
X x=7;
Tutaj masz niejawną konwersję typu int
na typ X
:
#include <iostream>
class X {
public:
X() : mX(0) {}
X(int x) : mX(x) {}
int get() {
return mX;
}
private:
int mX;
};
int main() {
X x;
x = 10;
std::cout << x.get();
return 0;
}
Tylko to nie ma niczego wspólnego z polimorfizmem.
Edit: ojej, spóźniłem się. :-(
ok, dzięki za odp