cpp:casting
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| cpp:casting [2026/04/24 12:18] – [Παρατηρήσεις] gthanos | cpp:casting [2026/04/24 12:28] (current) – [reinterpret_cast<>] gthanos | ||
|---|---|---|---|
| Line 190: | Line 190: | ||
| </ | </ | ||
| - | Συνοπτικός Πίνακας | + | **Συνοπτικός Πίνακας** |
| ^ Τύπος | ^ Τύπος | ||
| Line 199: | Line 199: | ||
| - | ====== const_cast<> | + | ===== const_cast<> |
| + | |||
| + | Είναι ο μόνος τελεστής που μπορεί να προσθέσει ή να αφαιρέσει το const (ή το volatile) από μια μεταβλητή. | ||
| + | |||
| + | * **Γιατί να το κάνεις: | ||
| + | * **Ο Κίνδυνος: | ||
| + | |||
| + | <code cpp cost_cast.cpp> | ||
| + | void legacy_function(char* str) { | ||
| + | /* ... */ | ||
| + | } | ||
| + | |||
| + | const char* my_text | ||
| + | // legacy_function(my_text); | ||
| + | legacy_function(const_cast< | ||
| + | </ | ||
| ====== reinterpret_cast<> | ====== reinterpret_cast<> | ||
| + | |||
| + | Αυτός είναι ο πιο ισχυρός και επικίνδυνος τελεστής. Λέει στον compiler: " | ||
| + | |||
| + | **Τι κάνει: | ||
| + | |||
| + | **Προσοχή: | ||
| + | |||
| + | <code cpp reinterpret_cast.cpp> | ||
| + | long address = 0x7FFF1234; | ||
| + | // Ερμήνευσε αυτόν τον αριθμό ως διεύθυνση μνήμης ενός ακεραίου | ||
| + | int* p = reinterpret_cast< | ||
| + | </ | ||
| + | |||
| + | Ο συγκεκριμένος τελεστής μοιάζει με το type casting που γνωρίζουμε από τη γλώσσα C, διότι ο μεταγλωττιστής ακολουθεί χωρίς έλεγχο τις οδηγίες του προγραμματιστή. | ||
| + | |||
| + | |||
cpp/casting.1777033136.txt.gz · Last modified: 2026/04/24 12:18 by gthanos
