int main(int argc, char* argv[])
{
X x;
out << x << endl;
int * xp = reinterpret_cast<int*>(&x);
xp[1] = 47;
out << x << endl; // 没有达到想要的效果!!
X x2;
const vptr_size = sizeof(X) - x2.memSize();
long l = reinterpret_cast<long>(&x2);
l += vptr_size;
xp = reinterpret_cast<int*>(l);
xp[1] = 47; // 跨过虚表指针占用的空间
out << x2 << endl; // OK。
// test static_cast
// test cosnt_cast
// test reinterpret_cast
#include <iostream>
int main()
{
// b points const int object, so cint_a can not be modified
const int cint_a = 10;
const int* b = &cint_a;
int* c = const_cast< int* > ( b );
std::cout << *c << std::endl;
*c = 20;
std::cout << *c << std::endl;
std::cout << cint_a << std::endl;
// b2 points int object, so cint_a2 can be modified
int cint_a2 = 10;
const int* b2 = &cint_a2;
int* c2 = const_cast< int* > ( b2 );
std::cout << *c2 << std::endl;
*c2 = 20;
std::cout << *c2 << std::endl;
std::cout << cint_a2 << std::endl;