programowanie
matrix: Czy mógłbym prosić o wytłumaczenie operatora rzutowania reinterpretcast?
Szukałem informacji, ale średnio rozumiem jak go można wykorzystać
obiekt.Pole1 = 100;
obiekt. Pole2 = 200;
int *Tab = reinterpretcast <int*>(&obiekt);
cout << "Tab[0]: " << Tab[0] << endl;
cout << "Tab[1]: " << Tab[1] << endl;
Taki przykład mam, jakim sposobem i dlaczego za pomocą tego operatora tak się to zapisuje?
Jakby ktos miał jeszcze jakieś inne przykłady wykorzystania tego operatora, to bym bardzo
prosił o wstawienie.
14 wrz 02:56
matrix: up
14 wrz 17:02
Dziadek Mróz:
Wracamy na naszą stronę:
http://www.cplusplus.com/doc/tutorial/typecasting/
T reinterpret_cast<T>(arg) konwertuje wskaźnik jednego obiektu na wskaźnik drugiego obiektu
bez powiązania typów poprzez kopię pamięci, tzn. rzutowanie książki na jabłko. Przy
static_cast rzutujesz powiązane typy np. int na float.
https://ideone.com/skdHHN
#include <iostream>
class Obiekt {
public:
int Pole1;
int Pole2;
};
int main(int argc, char **argv)
{
Obiekt obiekt;
obiekt.Pole1 = 100;
obiekt.Pole2 = 200;
int *Tab = reinterpret_cast <int*>(&obiekt);
std::cout << "Tab[0]: " << Tab[0] << std::endl;
std::cout << "Tab[1]: " << Tab[1] << std::endl;
}
Pamięć [ 0x0000 | 0x0001 | 0x0002 | 0x0003 ]
obiekt [ 100 | 200 ]
Tab [ 100 | 200 ]
14 wrz 17:25
matrix: dziękuję
14 wrz 17:39