首页 > 编程语言 >C++,四种强制类型转换,static_cast,const_cast,dynamic_cast,reinterpret_cast

C++,四种强制类型转换,static_cast,const_cast,dynamic_cast,reinterpret_cast

时间:2024-04-13 10:44:25浏览次数:20  
标签:类型转换 const cout dynamic cast static func

 

 

#include <iostream>
using namespace std;

struct A
{
    virtual void func() { cout << "A func" << endl; }
};

struct B :public A
{
    void func() { cout << "B func" << endl; }
};

int main()
{
    cout << "C++ 类型转换:static_cast,const_cast,dynamic_cast,reinterpret_cast" << endl;

    // static_cast(数据类型之间转换)
    float num1 = 2.9;
    int num2 = static_cast<int>(num1);
    cout << "static_cast float: " << num1 << endl;
    cout << "static_cast int: " << num2 << endl;
    cout << endl;

    // const_cast(去长量化)
    int data1 = 10;
    const int* data2 = &data1;
    int* data3 = const_cast<int*>(data2);
    cout << "const_cast data3: " << *data3 << endl;
    cout << endl;

    // dynamic_cast(将父类的指针或引用转换为子类的指针或引用,父类必须要有虚函数)
    B b;
    b.func();
    
    A* a = dynamic_cast<A*>(&b);
    a->func();

    B* bb = dynamic_cast<B*>(a);
    bb->func();

    cout << endl;
    
    // reinterpret_cast(啥都行,但是不推荐)
    int n1 = 10;
    int* n2 = &n1;
    float* n3 = reinterpret_cast<float*>(n2);
    cout << "reinterpret_cast float: " << *n3 << endl;

    return 0;
}

 

标签:类型转换,const,cout,dynamic,cast,static,func
From: https://www.cnblogs.com/shiyixirui/p/18132567

相关文章

  • 索引定位使用案例-类型转换
    sqlselectcount(0)from(selectdistinctcc.*,to_char(a1.D_DEALDATE,'yyyy-MM-dd')D_DEALDATE,a1.C_DATA_IDF,trim(a1.C_FIELD7)ZQFL,trim(a1.C_FIELD8)C_FIELD8,t......
  • M. Triangle Construction
    原题链接题解如果存在某一条边的\(a_i>=2*(sum-a_i)\)那么这条边一定有点剩余无法连接,为什么?这条边上每取两个点作为底边点,就一定能去外面一个点作为顶点,且无交叉(顺时针或逆时针)code#include<bits/stdc++.h>#definelllonglongusingnamespacestd;intmain(){ll......
  • String类型转LPCTSTR -----理解C++中的字符串类型转换
    在看代码时,发现有时候会把string类型转换为LPCTSTR,刚开始不理解为什么要做这个转换,所以做了一些调查,现在记录如下是这样的,STRING是代表C++中的字符串string,而LPCTSTR代表的是Windows系统中的字符串类型。也就是说,这样转换的目的是为了把C++中的字符串string转换为Windows系......
  • 52 Things: Number 20: How are Merkle-Damgaard style hash functions constructed?
    52Things:Number20:HowareMerkle-Damgaardstylehashfunctionsconstructed?52件事:第20件:Merkle-Damgaard风格的散列函数是如何构建的? Thisisthelatestinaseriesofblogpoststoaddressthelistof '52ThingsEveryPhDStudentShouldKnow' todoCr......
  • const 使用总结
    const关键字是用于定义一个不该被改变的对象,它的作用是告诉编译器和其他程序员不允许修改这个对象的值或者状态。当程序员看到使用const修饰的代码时就知道不应该修改对应对象的值,而编译器则会强制实施这个约束,任何违反这个规定的代码会在编译期间报错。它可以用于任何函数或者类......
  • C 强制类型转换
    强制类型转换是把变量从一种类型转换为另一种数据类型。例如,如果您想存储一个long类型的值到一个简单的整型中,您需要把long类型强制转换为int类型。您可以使用强制类型转换运算符来把值显式地从一种类型转换为另一种类型,如下所示:(type_name)expression请看下面的......
  • 变量、常量(constant)
    java是一个强类型语言,每个变量都必须声明其类型;变量要素包含:变量名、变量类型、作用域typevarname=[=value][{,varname[=value]}];变量命名规范:所有的变量,方法,类名(见名知意)类成员变量:首字母小写,驼峰原则,eg:lastName类名,方法名,局部变量:首字母小写,驼峰原则常量:大写字母和......
  • VB中DirectCast和CType的区别及使用
    DirectCast:主要用于执行明确的类型转换,只能在编译时确定类型关系时使用。如果转换不是有效的,则会引发异常。如果你要把一个Object变量用DirectCast转换成String,必须确定这个变量确实包含一个String(或者为Nothing).如果它包含一个Integer之类的东西,会抛出一个异常......
  • uRPF(Unicast Reverse Path Forwarding,单播反向路径转发)
    uRPF(UnicastReversePathForwarding)概念和原理这是网络设备的一个安全特性,主要功能是用于防止基于源地址欺骗的网络攻击行为,说简单一点就是在IP数据包转发的时候不单基于目的地址查看路由表,对源地址同样进行查表,如未能查到路由(一般不是默认路由,但根据策略不同行为稍有区别),则......
  • Verification -- Basic Concepts ~ 4. Constraint Random Verification
    ConstraintRandomVerificationConstraintRandomVerification(CRV)是一种用于生成具有特定约束的随机测试用例的技术,以确保生成的输入激励满足某些设计要求。在CRV中,定义了一组捕获设计要求的约束,例如数据范围、时序要求和接口协议。然后,测试平台生成一组满足这些约束条......