C++ dynamic_cast学习

发布时间:2023年12月29日

dynamic_cast是将一个基类对象指针(或引用)转换到继承类指针;

可以在执行期决定真正的类型;

与static_cast一样,dynamic_cast的转换也需要目标类型和源对象有一定的关系:继承关系;
更准确的说,dynamic_cast是用来检查两者是否有继承关系;

用法
dynamic_cast <type-id> (expression)
    该运算符把expression转换成type-id类型的对象;Type-id 必须是类的指针、类的引用或者void*;

// castdemo.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include<iostream>

class B
{
public:
	int m_iNum;
	virtual void foo() {};
};

class D:public B
{
public:
	char* m_szName[100];
};

void myfunc(B* pb)
{
	D* pd1 = static_cast<D*>(pb);
	D* pd2 = dynamic_cast<D*>(pb);

	std::cout << pd1 << std::endl;
	std::cout << pd2 << std::endl;
}

int main(int argc, char* argv[])
{
	B b1;
	myfunc(&b1);

	D d1;
	myfunc(&d1);

	return 0;
}

如果 pb 指向一个 D 类型的对象,pd1 和 pd2 是一

文章来源:https://blog.csdn.net/bcbobo21cn/article/details/135296660
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。