c++ 派生类Boy转换成派生类Girl的转换问题

现在有一个基类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;
}

 

进行调试

静态转换就是这样的啊??静态转换就是直接转换,不会去管指针到底绑定了什么对象,不用dynamic_cast不可能返回nullptr。