- static_cast
- const_cast
- dynamic_cast
- reinterpret_cast
In C casting is done via () operator
int i = 7;
e.g double d = (double) i;
in c++ to do something like this one should use static_cast .
e.g double d = static_cast<double>(i);
const_cast
const_cast is used to remove constness of an object .
jump(Person * person);
Person p;
const Person& constPerson = p;
then some thing like this wont work.
jump(&constPerson) , cause jump expects a non const object . To fix this you would have to use something like this.
jump(const_cast<person*>(&constPerson));
dynamic_cast
This cast is used with inheritance hierarchies . Say to cast a between pointers or references of base classes to references or pointers of derived classes.
e.g
Mammal * mammal;
jump(dynamic_cast<person*>(mammal));
if there was a function like
jump(Person& person); then
we would have something like
jump(dynamic_cast<person&>(*mammal));
if the casting is not possible , the dynamic_cast mechaism throws an excetion or the result is null (This is implementation specific)
No comments:
Post a Comment