Rzutowanie typów kompatybilnych za pomocą static_cast
Stronę tą wyświetlono już: 3995 razy
Funkcja szablonowa static_cast umożliwia rzutowanie kompatybilnych typów danych (np. int na double) jak również kompatybilnych typów wskaźnikowych. Przy czym ten drugi rodzaj rzutowania nie sprawdza poprawności typu w przypadku rzutowania w dół. Z tego powodu wszędzie tam, gdzie programista wie, że wskaźnik na klasę bazową jest dziedziczony przez z góry znany typ klasy można stosować rzutowanie za pomocą funkcji static_cast, w przeciwnym przypadku konieczne jest użycie funkcji dynamic_cast.
Oto prosty przykład:
Wynik działania powyższego kodu będzie następujący:
concreteAfu is called 100 fu from ConcreteA is called concreteBfu is called 1.4013e-043
Wynika z tego niezbicie, że w przypadku gdy za wskaźnikiem na klasę bazową nie stoi obiekt klasy, na którą odbywa się rzutowanie, wtedy (chociaż samo rzutowanie się powiedzie) uzyskany wskaźnik na obiekt nie będzie zawierał wskaźnika na poprawnie zainicjalizowany obiekt klasy, na który rzutowanie się odbywa.
W przypadku rzutowania typu zmiennoprzecinkowego na całkowity część ułamkowa jest ucinana:
Wynik powyższego kodu:
Rzutowanie dodatniej zmienoprzecinkowej na calkowita: 10 Rzutowanie ujemnej zmienoprzecinkowej na calkowita: -10
Tytuł:
C++ Zbiór zadań z rozwiązaniami
Autor:
Tomasz Jaśniewski
Tytuł:
Mikrokontrolery dla hobbystów. Projekty DIY w języku C i C++
Autor:
Miguel Angel Garcia-Ruiz, Pedro Cesar Santana Mancilla
Tytuł:
Architektura oprogramowania bez tajemnic. Wykorzystaj język C++ do tworzenia wydajnych aplikacji i systemów
Autor:
Adrian Ostrowski, Piotr Gaczkowski
Tytuł:
Wprowadzenie do C++
Autor:
Michał Matlak
Tytuł:
Opus magnum C++ 11. Programowanie w języku C++. Wydanie II poprawione (komplet)
Autor:
Jerzy Grębosz
Tytuł:
Programowanie wieloplatformowe z C++ i wxWidgets 3
Autor:
Bartosz W. Warzocha
Tytuł:
Język C++ i przetwarzanie współbieżne w akcji. Wydanie II
Autor:
Anthony Williams
Tytuł:
C++ dla bystrzaków. Wydanie VII
Autor:
Stephen R. Davis
Tytuł:
Tablice informatyczne. Podstawy C++
Autor:
Radosław Sokół
Tytuł:
Opus magnum C++11. Programowanie w języku C++ (komplet)
Autor:
Jerzy Grębosz