国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

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

2020-01-26 15:42:30
字體:
供稿:網(wǎng)友

首先dynamic_cast:

復(fù)制代碼 代碼如下:

#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:

復(fù)制代碼 代碼如下:

#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地址,可知地址一樣。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 惠来县| 三亚市| 久治县| 九寨沟县| 社会| 拜泉县| 民丰县| 荥经县| 茌平县| 韶关市| 临沭县| 禹州市| 远安县| 建始县| 舞阳县| 扎兰屯市| 平顺县| 光泽县| 台北市| 夏邑县| 米林县| 获嘉县| 砚山县| 木兰县| 兖州市| 高台县| 综艺| 班玛县| 盈江县| 怀集县| 湖口县| 邢台市| 临夏市| 藁城市| 仁布县| 肥西县| 皋兰县| 西城区| 长白| 册亨县| 斗六市|