c++ dynamic_cast与static_cast使用方法示例

本文用示例讲解了dynamic_cast、static_cast子类与基类之间转换功能的使用方法

首先dynamic_cast:

复制代码 代码如下:

#include
using namespace std;
class A{
    public:
        virtual ~A(){} //使用dynamic_cast时,必要!
};
class B:public A{
    public:
        B(){
            m_b=12;
        }
        void foo(){
            cout<<"B: "<        }
    private:
        int m_b;
};
int main()
{   
    A *a=new B();
    B *b=dynamic_cast(a);
    b->foo();
    delete a;
    return 0;
}

上面没有virtual ~A(){},编译时会报错:(source type is not polymorphic)。

static_cast:

复制代码 代码如下:

#include
using namespace std;
class A{
    public:
        A():m_a(32){}
        void foo(){
            cout<<"A: "<        }
        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: "<        }
    private:
        int m_b;
};
int main()
{   
    A *a=new B();
    B *b=static_cast(a);
    A *aa=static_cast(b);
    b->foo();
    aa->foo();
    delete a;
    return 0;
}

打印a、b、aa地址,可知地址一样。

以上就是c++ dynamic_cast与static_cast使用方法示例的详细内容,更多请关注0133技术站其它相关文章!

赞(0) 打赏
未经允许不得转载:0133技术站首页 » C语言