C++ dynamic_cast学习
2023-12-29 19:40:10
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
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!