• C++回顾day03---<类型转换>


    一:C++类型转换

    (一)static_cast<>() 静态类型转换:基本类型可以转换但是指针类型不允许。可以进行隐式类型转换

    double n=1.23
    int m=static_case<>(n)

    (二)reinterpreter_cast<>() 重新解释类型:同C中的强制类型转换。可以转换指针

    char* p = "Hello";
    int* pi = reinterpret_cast<int *>(p);

    (三)dynamic_cast<>() 多态类型转换:用于实现多态的子类和父类之间的转换

    class A
    {
    public:
        int a;
    public:
        A(int n)
        {
            this->a = n;
        }
    
        virtual void say()
        {
            cout << "A say" << endl;
        }
    };
    
    class B :public A
    {
    public:
        int b;
    
        B(int m, int n) :A(n)
        {
            this->b = m;
        }
    
        virtual void say()
        {
            cout << "B say" << endl;
        }
    };
    void main()
    {
        A* a = new B(10,5);
        B* b = dynamic_cast<B*>(a);    //父类和子类必须满足多态要求(含有virtual函数重写)
        system("pause");
    }

    (四)const_cast<>():去除变量的只读属性(前提是变量在内存中可以修改)

    void ReadOnly(const char* name)
    {
        char* tn = const_cast<char*>(name);
        tn[0] = 'W';
    }
    
    void main()
    {
        char name[] = "Hello";
        cout << name << endl;
        ReadOnly(name);
        cout << name << endl;
        system("pause");
    }

    若是不允许修改:

  • 相关阅读:
    多线程 execute和submit区别和使用
    Linux上安装rz和sz命令
    杜恩德__百度百科
    电商类-高并发场景处理方式一
    ConcurrentHashMap源码分析(1.8)
    JVM | 为何生产环境最好保持 Xms = Xmx
    分享ProcessOn网上的干货模板
    pythonweb开发
    pyquery
    python正则
  • 原文地址:https://www.cnblogs.com/ssyfj/p/10778740.html
Copyright © 2020-2023  润新知