首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏ClickHouse

    C++ const_cast static_cast dynamic_cast reinterpret_cast

    const_cast <new_type> (expression) static_cast <new_type> (expression) reinterpret_cast <new_type> = nullptr) { p->fly(); } else { }*/ } 3 dynamic_cast dynamic_cast运算符,应该算是四个里面最特殊的一个 与static_cast一样,dynamic_cast的转换也需要目标类型和源对象有一定的关系:继承关系。 更准确的说,dynamic_cast是用来检查两者是否有继承关系。 从这个方面来看,似乎dynamic_cast又和reinterpret_cast是一致的,但实际上,它们还是存在着很大的差别。 Parent *b = dynamic_cast<Parent *>(p); b->fly(); Children *p2 = dynamic_cast<Children *>(b)

    75571发布于 2021-10-13
  • 来自专栏xingoo, 一个梦想做发明家的程序员

    static_cast const_cast reindivter_cast dynamic_cast

    使用标准C++的类型转换符:static_cast 、dynamic_cast、reinterdivt_cast、和const_cast。 在类层次间进行上行转换时,dynamic_cast和static_cast 的效果是一样的; 在进行下行转换时,dynamic_cast具有类型检查的功能,比static_cast 更安全。 另外,dynamic_cast还支持交叉转换(cross cast)。如下代码所示。 即 dynamic_cast 可用于继承体系中的向下转型,即将基类指针转换为派生类指针,比 static_cast 更严格更安全。 dynamic_cast 在执行效率上比 static_cast 要差一些,但 static_cast 在更宽上范围内可以完成映射,这种不加限制的映射伴随着不安全性。

    1K100发布于 2018-01-17
  • 来自专栏用户2442861的专栏

    static_cast, dynamic_cast, reinterpret_cast, const_cast区别

    static_cast和reinterpret_cast揭秘 收藏    本文讨论static_cast<> 和 reinterpret_cast<>。    至于reinterpret_cast,我很喜欢,很象c语言那样的暴力转换:)    dynamic_cast:动态类型转换    static_cast:静态类型转换    reinterpret_cast 一般是普通数据类型(如int m=static_cast<int>(3.14));    reinterpret_cast很像c的一般类型转换操作    const_cast是把cosnt或volatile 当写C++(程序)时,有时候我们在使用static_cast<>和reinterpret_cast<>时可能会有点模糊。 (rubbish) int* pn2 = static_cast<int*>(pv);   // reinterpret_cast<> //错误,编译器知道你应该调用static_cast

    1.1K20发布于 2018-09-20
  • 来自专栏ClearSeve

    static_cast, dynamic_cast, const_cast 和 reinterpret_cast 怎么用

    static_cast dynamic_cast const_cast reinterpret_cast C 语言风格类型转化(type)value 函数式风格类型转换type(value) 回答 static_cast ,一般用 dynamic_cast 来替代。 <long>(m); // 宽转换,没有信息丢失 char ch = static_cast<char>(m); // 窄转换,可能会丢失信息 int *p1 = static_cast<int*> reinterpret_cast 可以认为是 static_cast 的一种补充,一些 static_cast 不能完成的转换,就可以用 reinterpret_cast 来完成。 参考 https://www.quora.com/How-do-you-explain-the-differences-among-static_cast-reinterpret_cast-const_cast-and-dynamic_cast-to-a-new-C

    2.4K10编辑于 2022-02-10
  • 来自专栏猿人谷

    static_cast ,reinterpret_cast

    C++中static_cast和reinterpret_cast的区别 C++ primer第五章里写了编译器隐式执行任何类型转换都可由static_cast显示完成;reinterpret_cast通常为操作数的位模式提供较低层的重新解释 1、C++中的static_cast执行非多态的转换,用于代替C中通常的转换操作。 C++同时提供了4种新的强制类型转换形式(通常称为新风格的或C++风格的强制转 型):const_cast(expression)、dynamic_cast(expression)、 reinterpret_cast (expression)和 static_cast(expression),每一种都适用于特定的目的,具体如下: (1)dynamic_cast 主要用于执行“安全的向下转型(safe downcasting int i = static_cast<int>(d); (3)const_cast一般用于强制消除对象的常量性。

    2.4K100发布于 2018-01-17
  • 来自专栏编程技术专栏

    C++的四种转换(const_cast、static_cast、dynamic_cast、reinterpreter_cast)

    ,非指针直接报错 向上转化是安全的,如果向下转能(指针或引用)成功但是不安全,结果未知; dynamic_cast 用于动态类型转换。 在进行下行转换时,dynamic_cast具有类型检查的功能,比static_cast更安全。 如果没有virtual方法进行下行转换(指针或引用)会直接报错 const_cast 常量指针被转化成非常量的指针,并且仍然指向原来的对象; 常量引用被转换成非常量的引用,并且仍然指向原来的对象; const_cast const int a=10; int *p=const_cast<int*>(&a); //p和a指向同一块内存地址 *p = 100; //修改*p,但a=10,*p=100 reinterpret_cast ,这样才是正确使用reinterpret_cast方式。

    3.9K10发布于 2019-08-29
  • 来自专栏我是业余自学C/C++的

    static_cast

    static_cast是一个计算机函数。 使用方法: static_cast<type_id>(expression) //把expression转换成type_id类型

    85640发布于 2018-05-28
  • 来自专栏全栈程序员必看

    static_cast

    使用标准C++的类型转换符:static_cast 、dynamic_cast、reinterdivt_cast、和const_cast。 在类层次间进行上行转换时,dynamic_cast和static_cast 的效果是一样的; 在进行下行转换时,dynamic_cast具有类型检查的功能,比static_cast 更安全。 另外,dynamic_cast还支持交叉转换(cross cast)。例如以下代码所看到的。 3.4 const_cast 使用方法:const_cast (exdivssion) 该运算符用来改动类型的const或volatile属性。 dynamic_cast 在运行效率上比 static_cast 要差一些,但 static_cast 在更宽上范围内能够完毕映射,这样的不加限制的映射伴随着不安全性。

    62210编辑于 2022-07-14
  • 来自专栏米扑专栏

    标准C++的类型转换符:static_cast、dynamic_cast、reinterpret_cast和const_cast

    二、 C++类型转换 使用标准C++的类型转换符,主要有四种类型:static_cast、dynamic_cast、reinterdivt_cast、const_cast 1 static_cast 用法 在类层次间进行上行转换时,dynamic_cast和static_cast的效果是一样的; 在进行下行转换时,dynamic_cast具有类型检查的功能,比static_cast更安全。 另外,dynamic_cast还支持交叉转换(cross cast)。如下代码所示。 即dynamic_cast可用于继承体系中的向下转型,即将基类指针转换为派生类指针,比static_cast更严格更安全。 dynamic_cast在执行效率上比static_cast要差一些,但static_cast在更宽上范围内可以完成映射,这种不加限制的映射伴随着不安全性。

    1.6K20发布于 2019-02-19
  • 来自专栏计算机视觉理论及其实现

    tf.cast

    tf.cast( x, dtype, name=None)将张量投射到一个新的类型上。这个操作对x(对于张量)或x进行了强制转换。值(在sparse张量的情况下)到dtype。 例:x = tf.constant([1.8, 2.2], dtype=tf.float32)tf.cast(x, tf.int32) # [1, 2], dtype=tf.int32参数:x: 张量或稀疏张量 异常:TypeError: If x cannot be cast to the dtype.

    1.1K20编辑于 2022-09-04
  • 来自专栏hml_知识记录

    SQL函数 CAST

    SQL函数 CAST 将给定表达式转换为指定数据类型的函数。 大纲 CAST(expr AS CHAR | CHARACTER | VARCHAR | NCHAR | NVARCHAR) CAST(expr AS CHAR(n) | CHARACTER(n) | | TINYINT) CAST(expr AS DEC | DECIMAL | NUMERIC) CAST(expr AS DEC(p[,s]) | DECIMAL(p[,s]) | NUMERIC( p[,s]) ) CAST(expr AS DOUBLE) CAST(expr AS MONEY | SMALLMONEY) CAST(expr AS DATE) CAST(expr AS TIME) CAST(expr AS POSIXTIME) CAST(expr AS TIMESTAMP | DATETIME | SMALLDATETIME) CAST(expr AS BIT) CAST(expr

    5.4K30编辑于 2022-03-28
  • 来自专栏HappenLee的技术杂谈

    C++雾中风景11:厘清C++类型转换(static_cast,dynamic_cast,reinterpret_cast,const_cast)

    ,reinterpret_cast,const_cast,今天就来聊一聊,在C++之中应该如何来使用这些类型转换的。 2.新式的类型转换 C++语言提供了四种新式类型转换的操作: static_cast,dynamic_cast,reinterpret_cast,const_cast,这些操作都依托了C++的模板来使用 ) //函数需要传递const属性的变量,如atoi atoi(const_cast<const char*>(char_ptr)) static_cast static_cast 是静态的转换形式,不通过运行时类型检查来保证转换的安全性 dynamic_cast dynamic_cast主要用于在类层次间进行上下行转换时,它与static_cast的最大的区别就在于dynamic_cast能够在运行时进行类型检查的功能,所以做起类型转换比 static_cast更安全,但是dynamic_cast会耗费更多的系统资源。

    79121发布于 2018-10-10
  • 来自专栏python前行者

    tf.cast()

    tf.cast(x, dtype, name=None) 此函数是类型转换函数 参数: x:输入 dtype:转换目标类型 name:名称 返回:Tensor 例: # tensor `a` is [1.8, 2.2], dtype=tf.float tf.cast(a, tf.int32) ==> [1, 2] # dtype=tf.int32 a = tf.Variable([1,0,0,1,1 ]) b = tf.cast(a,dtype=tf.bool) sess = tf.Session() sess.run(tf.initialize_all_variables()) print(sess.run

    85330发布于 2019-03-25
  • 来自专栏韩曙亮的移动开发专栏

    【C++ 语言】类型转换 ( 转换操作符 | const_cast | static_cast | dynamic_cast | reinterpret_cast | 字符串转换 )

    文章目录 I . const_cast 转换操作符 II . static_cast 转换操作符 III . dynamic_cast 转换操作符 IV . reinterpret_cast 转换操作符 类型转换代码示例 I . const_cast 转换操作符 ---- 1. = "Hello"; ② 将常量转为变量 : 格式为 " const_cast < 要转换的目标类型 > ( 常量或变量名称 ) " ; char* str = const_cast<char*> 转换操作符 ---- reinterpret_cast 转换操作符作用 : 对指针变量 , 引用变量进行原始的转换 , 即将地址值转成对应的类型 ; ① 代码示例 : // 4. reinterpret_cast 类型转换 //新式转换 : // 1. const_cast 转换操作符 : //const_cast : 主要用来修改类型的 const 与 volatile 属性 , // 将不可修改属性

    97230编辑于 2023-03-27
  • 来自专栏韩曙亮的移动开发专栏

    【C++】类型转换 ① ( C 中的类型转换 | C++ 类型转换操作符 | const_cast | static_cast | dynamic_cast | reinterpret_cast )

    <float>(num); 重新解释类型 reinterpret_cast : 对指针变量 , 引用变量进行原始的转换 , 即将地址值转成对应的类型 ; // 重新解释类型 char* 指针类型 - > int* 指针类型 char* hello = "Hello"; //获取 hello 字符串地址 , 将其转为 int 类型 int hello_address = reinterpret_cast <int> (&hello); 动态类型转换 dynamic_cast : 父类 ( 对象 / 指针 / 引用 ) 和 子类 ( 对象 / 指针 / 引用 ) 之间的转换 , 是 C++ 语言特有的 , C 语言中没有该转换类型 ; 常量转换 const_cast : 只针对 C++ 常量 , 将 常量转为变量 或 将 变量转为常量 ; 2、C 语言和 C++ 常量原理本质 C 语言常量 和 C++ 和 重新解释类型 reinterpret_cast 对应 C 语言中的 强制类型转换 , C++ 中的 动态类型转换 dynamic_cast 和 常量转换 const_cast 是 C++ 独有的

    68310编辑于 2023-11-27
  • 来自专栏计算机视觉理论及其实现

    static_cast 用法

    static_cast 用法 语法: static_cast<type-name>(expression) 仅当 type-name 可以隐式转换为 expression 所属的类型,或者 expression 即使基类中没有虚函数也可以使用 static_cast 进行转换。 可以将有继承关系的基类对象的地址赋给派生类指针。 因为派生类指针可以隐式转换为基类指针,无需显式类型转换,所以可以用 static_cast 进行另一个方向的转换,即将基类指针转换为派生类指针。但是,这样做有什么意义呢? 同理,因为枚举值可以隐式转换为整型,无需显式类型转换,所以可以用 static_cast 将整型转换为枚举类型。 如果将没有继承关系的对象的地址赋给另一个类的指针,编译器会报错。 (&obase) ){ psub->act(); }#endif#if 0 Other oother(3); //error: invalid static_cast from

    1.4K40编辑于 2022-09-02
  • 来自专栏APP自动化测试

    C++中static_cast和dynamic_cast强制类型转换

    C++中提供了两种类型转换的方法: static_cast和dynamic_cast 简单从名字看一个是静态转换, 另一个是动态转换 一般转换分为两种: 上行转换和下行转换 上行转换大致意思是把子类实例向上转换为父类型 child method" << endl; }; }; int main(){ /* 上行转换 */ ChildClass child; Base b = static_cast <Base>(child); b.baseMethod(); /* 下行转换 */ Base bb; ChildClass cc = static_cast<ChildClass

    85220发布于 2019-10-15
  • 来自专栏数字IC小站

    SystemVerilog中$cast方法

    $cast是systemverilog中的内建方法。 $cast可以对不同的内建类型进行转换,用的更多的是不同层次之间类的转换。 changsanjiao"); f = c20; f.print(); c20.area2 = "zhejiang"; $cast changsanjiao # has zhejiang # Hello changsanjiao # has hangzhou # Hello changsanjiao # has hangzhou 请注意,不能直接把$cast 使用cast也不能把c20给c10; 那么cast的作用可以直接在子类之间用=代替,如上述代码中所示; 千万小心这样的句柄传递,会造成两个句柄同时指向一个对象,当使用其中一个句柄对对象的内容进行修改 同时也可以看出cast的复制效果只是个指针,只有使用copy函数才能切断联系。 那么这样的类型转换有什么好处呢?

    2.1K20发布于 2020-06-30
  • 来自专栏就业 C++ 综合学习

    【C++】一文掌握C++的四种类型转换 --- static_cast、reinterpret_cast、const_cast、dynamic_cast

    强制类型转换(重新解释):reinterpret_cast 去常转换:const_cast 动态转换:dynamic_cast 3.1 static_cast 静态转换 static_cast用于非多态类型的转换 注意:隐式类型转换不支持的转换,套上static_cast也不支持! 如果我们将一些需要进行强制类型转换的场景也套上 static_cast,这时就会发生报错了! 这保证了不能乱用 对于需要强制类型转换的场景需要使用reinterpret_cast 总结: static_cast 可以用于基本类型的转换 static_cast 不能用于基本类型指针间的转换(需要强制类型转换 reinterpret_cast操作符通常为操作数的位模式提供较低层次的重新解释,用于将一种类型转换为另一种不同的类型 3.3 const_cast 去常转换 const_cast 只能改变运算对象的底层 在有重载函数的上下文中使用const cast无可厚非,但是在其他情况下使用const cast也就意味着程序存在某种设计缺陷。

    1.5K10编辑于 2024-08-21
  • 来自专栏全栈程序员必看

    Java cast_java concat方法

    向上转型:多态本身是子类类型向父类类型向上转换的过程,这个过程是默认的;当父类引用指向一个子类对象时,便是向上转换;

    53510编辑于 2022-10-03
领券