C++ dynamic_cast学习

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

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

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

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

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

#include "stdafx.h"
#include

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(pb);
	D* pd2 = dynamic_cast(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 是一

你可能感兴趣的:(VC++,c++,开发语言,dynamic_cast,static_cast)