捉也捉不到 2021-01-26 16:05 采纳率: 100%
浏览 36
已结题

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;
}

进行调试

  • 写回答

1条回答 默认 最新

  • KeLiaoo 2021-01-27 11:32
    关注

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 10月7日
  • 已采纳回答 9月29日

悬赏问题

  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突