手机
当前位置:查字典教程网 >编程开发 >C语言 >c++ dynamic_cast与static_cast使用方法示例
c++ dynamic_cast与static_cast使用方法示例
摘要:首先dynamic_cast:复制代码代码如下:#includeusingnamespacestd;classA{public:virtua...

首先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++ dynamic_cast与static_cast使用方法示例】相关文章:

C++ 中dynamic_cast&lt;&gt;的使用方法小结

C++生成dll和调用dll的方法实例

c++中inline的用法分析

浅谈C/C++中的static与extern关键字的使用详解

C++ using namespace std 用法深入解析

c++中vector&lt;int&gt;和vector&lt;int*&gt;的用法区别

深入理解atoi()与itoa()函数的用法

strncpy与snprintf 的用法比较

c++ 一个二进制串转化为整数的解决方法

static_cast,dynamic_cast,reinterpret_cast,const_cast的区别及用法详解

精品推荐
分类导航