when I was checking the code of Notepad++, I found something stops me, "reinterpret_cast",
first of all i never had the need to know much about casting because I use so stuff like
float BigNumber=15.12;
int T = (int)BigNumber;
anyways, when I start looking for this keyword I found it's amazing, there is a lot of ways of casting that make life more easier and more cool and more safe, here is the types of casting that I have found
- dynamic_cast
- static_cast
- const_cast
- reinterpret_cast
- safe_cast
every one do something cool, I will explain as I understand and for more details you can visit this link
http://msdn2.microsoft.com/en-us/library/5f6c9f8h.aspx
- dynamic_cast
used with the casting objects, when it find that the object is not identical with the Type, it return null, I call this Safe casting, this protect your application from being crashed if you are casting objects that don't has the same type.
- static_cast
this type of casting I call unsafe casting, why because it just convert the pointer to the object type without regarding the original type of the object or the type, imagine that
Car *CarObj;
Bus *BusObj;
Bus *NewCarObj= static_cast
what just happen can cause a lot of troubles while you are running your application, why , simply you reference pointer to object not the same type, this why it's not safe and can cause troubles
- const_cast
this one is cool, suppose we have const varible, and for some reason you want to change it, use this casting operator it will do it for you.
- reinterpret_cast
this casting is used to convert the object address into integral type variable, this cast is not safe to use with casting objects back
- safe_cast
this one is for dot net guys so I am not going to talk about :D,
I think the best 2 casting operators here is ( dynamic_cast - const_cast )
guys you can read more about it, but I mentioned it because I think it's important to know such things specially C++ Developers,
thanks for reading this, please if you find anything not right please post reply and tell me :)
No comments:
Post a Comment