zoukankan      html  css  js  c++  java
  • 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");
    }

    若是不允许修改:

  • 相关阅读:
    游标、锁
    树形背包浅谈
    金字塔
    Codeforces Round #652 (Div. 2) 题解
    NOI1999 棋盘分割
    NEERC2002 Folding
    HDU4283 You Are the One
    Codeforces Round #646 (Div. 2) 题解
    洛谷 P1679 神奇的四次方数
    UVA12563 劲歌金曲
  • 原文地址:https://www.cnblogs.com/ssyfj/p/10778740.html
Copyright © 2011-2022 走看看