现在有一个基类Man, 由此派生出Boy类,Girl类
现在, 实例化一个Boy, 然后用声明为Man的变量名承接,然后用static_cast将Boy强制转化成Girl,我的想法是强制转化会出现错误, 转换出来的应该是一个NULL, 但是却强制转化成功, 请问这是为什么? 如果想这种强制转化返回NULL, 我应该怎么办?(不使用dynamic_cast)
// 类声明
#pragma once
#include <string>
using std::string;
class Man
{
public:
Man(){};
~Man(){};
string name;
int age;
};
class Boy:public Man
{
public:
Boy(){};
~Boy(){};
string play;
};
class Girl :public Man
{
public:
Girl(){};
~Girl(){};
string sing;
};
// 使用
int main()
{
Man* girl = new Girl();
Man* boy = new Boy();
auto c = static_cast<Girl*>(boy);
delete girl;
delete boy;
return 0;
}
进行调试