c++ dynamic_cast与static_cast使用方法示例
更新时间:2020年4月25日 17:43 点击:1630
首先dynamic_cast:
复制代码 代码如下:
#include <iostream>
using namespace std;
class A{
public:
virtual ~A(){} //使用dynamic_cast时,必要!
};
class B:public A{
public:
B(){
m_b=12;
}
void foo(){
cout<<"B: "<<m_b<<endl;
}
private:
int m_b;
};
int main()
{
A *a=new B();
B *b=dynamic_cast<B*>(a);
b->foo();
delete a;
return 0;
}
上面没有virtual ~A(){},编译时会报错:(source type is not polymorphic)。
static_cast:
复制代码 代码如下:
#include <iostream>
using namespace std;
class A{
public:
A():m_a(32){}
void foo(){
cout<<"A: "<<m_a<<endl;
}
void setA(int a){
m_a=a;
}
private:
int m_a;
};
class B:public A{
public:
B(){
m_b=12;
setA(13);
}
void foo(){
cout<<"B: "<<m_b<<endl;
}
private:
int m_b;
};
int main()
{
A *a=new B();
B *b=static_cast<B*>(a);
A *aa=static_cast<A*>(b);
b->foo();
aa->foo();
delete a;
return 0;
}
打印a、b、aa地址,可知地址一样。
上一篇: C语言栈顺序结构实现代码
下一篇: k均值算法c++语言实现代码
相关文章
static_cast,dynamic_cast,reinterpret_cast和const_cast的区别详解
以下是对static_cast,dynamic_cast,reinterpret_cast和const_cast之间的区别进行了详细的介绍,需要的朋友可以过来参考下...2020-04-25static_cast,dynamic_cast,reinterpret_cast,const_cast的区别及用法详解
以下是对static_cast,dynamic_cast,reinterpret_cast,const_cast的区别及用法进行了详细的分析介绍,需要的朋友可以过来参考下...2020-04-25C++中的类型转换static_cast、dynamic_cast、const_cast和reinterpret_cast总结
这篇文章主要介绍了C++中的类型转换static_cast、dynamic_cast、const_cast和reinterpret_cast总结,需要的朋友可以参考下...2020-04-25c++ dynamic_cast与static_cast使用方法示例
本文用示例讲解了dynamic_cast、static_cast子类与基类之间转换功能的使用方法...2020-04-25C++中的new/delete、构造/析构函数、dynamic_cast分析
这篇文章主要介绍了C++中的new/delete、构造/析构函数、dynamic_cast分析 本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下...2020-04-25