C++类型转换

来源:互联网 发布:淘宝卖家账号多少钱 编辑:程序博客网 时间:2024/05/01 00:24

1.static_cast :静态类型转换
2.reinterpreter_cast :重新解释类型,有点类似于强制转换

3.dynamic_cast 动态类型转换,在父子类之间的多态类型转换
代码例子:

class animal{public:    virtual void cry() = 0;};class dog :public animal{public:    void cry(){        cout << "this dog is cring !!!" << endl;    }    void doThings(){        cout << "the dog eat stone!!!" << endl;    }};class cat : public animal{public:    void cry(){        cout << "this cat is cring!!!" << endl;    }    void doThings(){        cout << "this cat eat fish" << endl;    }};void display(animal *obj){    obj->cry();    dog *d1 = dynamic_cast<dog *>(obj);    if (d1!=NULL)    {        d1->doThings();    }    cat *c1 = dynamic_cast<cat *>(obj);    if (c1!=NULL)    {        c1->doThings();    }}int main(void){    dog d1;    cat c1;    display(&d1);    display(&c1);    animal *base1;    base1 = static_cast<dog*>(&d1);    base1->cry();    int a;    cin >> a;}
0 0
原创粉丝点击