今天同学在群里发了一篇题,关于reinterpret_cast类型转换的,个人觉得有必要记录一下:
题目代码如下:
#include <iostream>
using namespace std;
class A {
public:
virtual void func() {
cout << "A::func" << endl;
}
virtual void funcA() {
cout << "A::funcA" << endl;
}
private:
int a;
};
class B {
public:
virtual void func() {
cout << "B::func" << endl;
}
virtual void funcB() {
cout << "B::funcB" << endl;
}
private:
int b;
};
class C :public A, public B {
public:
virtual void func() {
cout << "C::func" << endl;
}
virtual void funcC() {
cout << "C::funcC" << endl;
}
private:
int c;
};
void test2()
{
C c;
A *pa = &c;
B *pb = &c;
C *pc = &c;
pa = reinterpret_cast<A *>(pb);
pa->func();
pa->funcA();
//pb = reinterpret_cast<B *>(pa);
//pb->func();
//pb->funcB();
//pa = reinterpret_cast<A *>(pc);
//pa->func();
//pa->funcA();
}
分析下运行情况,对此我画了图理解,希望有帮助对大家,如存在问题,麻烦不吝赐教。