พึ่งเคยใช้งานครั้งแรกโปรดอ่านที่นี่! howtouse!
x
  • Register
หางานด้าน IT อยู่เหรอ?

[C/C++]Regular cast vs. static_cast vs. dynamic_cast vs. reinterpret_cast แตกต่างกันอย่างไรบ้างครับ

+2 votes

ปกติแล้วผมเคยเห็นการ cast แบบเดียวคือ

MyClass *m = (MyClass *)ptr;

เลยอยากทราบว่าการ cast แบบ ต่างๆ นั้นจะแตกต่างกันอย่างไรบ้างครับ

ตัวอย่างแต่ละแบบของการ cast

 

MyClass *m = (MyClass *)ptr;
MyClass *m = static_cast<MyClass *>(ptr);
MyClass *m = dynamic_cast<MyClass *>(ptr);
MyClass *m = reinterpret_cast<MyClass *>(ptr);
ถามเมื่อ May 22, 2012 in C/C++ โดย HuaNaa (455 คะแนน)
   

1 Answer

+1 vote
dynamic_cast มี type check ถ้า cast ไม่ได้ จะเป็น null pointer ใช้ได้กับตัวแปร pointer เท่านั้น
แต่ static_cast กับ reinterpret_cast ไม่มี

static_cast นี่ใช้กับตัวแปรที่ไม่ใช่ pointer ได้ด้วย เช่น
double a = 1.2;
int i = static_cast<int>(a);

reinterpret_cast มีหนังสือบอว่าไม่ควรใช้แต่จำไม่ได้ว่าเพราะอะไร
ตอบเมื่อ May 22, 2012 โดย Krurkrit Phoosakul (1,174 คะแนน)

Related questions

+2 votes
1 คำตอบ
1,607 views ถามเมื่อ May 22, 2012 in C/C++ โดย HuaNaa (455 คะแนน)
+2 votes
1 คำตอบ
945 views ถามเมื่อ May 22, 2012 in C/C++ โดย HuaNaa (455 คะแนน)
+2 votes
1 คำตอบ
436 views ถามเมื่อ May 22, 2012 in C/C++ โดย HuaNaa (455 คะแนน)
+2 votes
1 คำตอบ
190 views ถามเมื่อ May 22, 2012 in C/C++ โดย HuaNaa (455 คะแนน)
...