zoukankan      html  css  js  c++  java
  • dynamic_cast的用处

    #include <iostream>
    #include <vector>
    #include <string>
    #include <exception>
    #include <stdexcept>
    #define TEST_THIS
    using namespace std;
    
    class Parent{
    public :
        virtual void say(){cout<<"parent"<<endl;}
    };
    class Son:public Parent{
    
    public :
        virtual void say(){cout<<"son"<<endl;}
    };
    
    class Son1{
        public :
        virtual void say(){cout<<"son1"<<endl;}
    };
    
    int main()
    {
        Parent *p=new Son;
        Son1 *ps= (Son1 *)p;//这样转换居然也能成功,ps-say()调用,输出son
        //Son1 *ps= dynamic_cast<Son1 *>(p);//转换不成功,ps为NULL,安全
        //Son *ps= dynamic_cast<Son *>(p);//转换成功
        cout<<ps<<endl;
    
        ps->say();
        delete p;
    
    
        #ifndef TEST_THIS
        try{
            int i=0;
            int a=10/i;
            cout<<a<<endl;
        }catch(runtime_error ex){
            cout<<ex.what()<<endl;
        }
        #endif
        vector<string> svec(5);
        svec[4]="abc";
    
        int *pi=new int;
        cout<<*pi<<endl;
    
        int *pi2=new int();
        cout<<*pi2<<endl;
    
        cout<<"done"<<endl;
    
        delete pi;
        delete pi2;
        cout<<pi<<","<<pi2<<endl;
    
        return 0;
    }
    
  • 相关阅读:
    bmp和Variant的转换
    获得Variant类型
    移去OleContainer的黑边框
    调整Mic音量
    关闭声道
    检测声卡存在
    控制音量及平衡
    显示媒体时间
    显示Audio CD的音轨时间
    显示AVI文件的桢数
  • 原文地址:https://www.cnblogs.com/wucg/p/2054549.html
Copyright © 2011-2022 走看看