C风格强制转换 和 static_cast的差别
class CPerson
{
public:
void Show()
{
std::cout<<"CPerson()!"<<std::endl;
}
};
class CStudent : private CPerson
{
};
int _tmain(int argc, _TCHAR* argv[])
{
CStudent* stu1 = new CStudent();
//stu1->Show(); //1. 编译不通过 可以理解
//CPerson* per2 = static_cast<CPerson*>(stu1); //2. 编译不通过 无法理解
//per2->Show();
CPerson* ppson = (CPerson*)stu1; // 3. 编译通过
ppson->Show();
return 0;
}
学生认为在这样的情况下2和3是会发生一样的转换,但事实却不是
学生学习当中请高手解释下情况2 和情况3 转换流程,学生不胜感激!