问题标签 [static-cast]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - reinterpret_cast 和 null 成员变量
我正在使用这样的 reinterpret_cast :
在方法内部,我的大多数成员变量(所有句柄)都是空的。这可能是因为 reinterpret_cast 因为我知道它不能保证我使用相同的地址吗?就像 static_cast 一样。我知道我们应该在这种情况下使用 static_case,但是这个问题现在让我感兴趣了。
c++ - 枚举的 reinterpret_cast 错误
为什么我不能对这样的演员使用 reinterpret_cast 运算符?
c++ - 关于 static_cast 的问题
我写了一段代码,但我对它的输出感到困惑:
输出是:
但据我所知,pb
指向类型 B。并且其中没有命名函数disp()
?那么,为什么它可以访问disp()
D 类中的函数呢?
c++ - 常规转换不会引发运行时错误
如果我们看到下面的代码,fun 函数将 C 的对象转换为 B 的对象并调用 B 自己的函数。它怎么不给出段错误。我认为这会导致崩溃。我的程序没有崩溃。任何人都可以解释为什么它工作正常。
c++ - static_cast 和 RTTI 与 dynamic_cast
请注意以下代码。据我所知,dynamic_cast 比 static_cast 慢。因为它在运行时评估类型。我的疑问是,如果我们将 static_cast 与 typeid() 一起使用如下,它是否需要与动态转换相同的时间?它会比 dynamic_cast 更快吗?
使用 RTTI 进行静态转换:
动态演员表:
c++ - 为什么我不能使用从一个 Xalan 类到其基类的 static_cast?
为什么编译器(g++)会抱怨这行代码?
我从编译器得到的错误是:
如果没有 static_cast,编译器会打印:
XalanElement 类定义为:
该文档还显示 XalanNode 应该从 XalanElement 派生,如您在此处所见 - XalanElement Class Reference。
在 XalanDocument.hpp 中,getDocumentElement() 的方法签名是:
c++ - 虚函数和 static_cast
在以下代码或UB的情况下,在多态类上使用static_cast后,我可以安全地调用虚函数吗?
c++ - static_cast 有什么区别(var) 和 *(int*)&var?
好的,所以我尝试这样做
现在我知道,在案例 2 中,第一个字节x
被重新解释为认为它是一个整数,并且位模式被复制到b
其中给出了一些垃圾,而在案例 1 中,它只是将值从 转换char
为int
。
除此之外,这两者之间有什么区别吗?
c++ - C++ 危险的铸造代码
我很确定这是危险的代码。但是,我想检查一下是否有人知道究竟会出现什么问题。
假设我有这个类结构:
然后假设我想要一种自动扩展类的方法,如下所示:
我可以做出的一个非常重要的保证是,既没有Base
也不Test
会有任何其他成员变量或方法。它们本质上是空类。
(潜在的)危险代码如下:
做这样的事情的基本原理是我正在使用一个类似于 Test 的类,但是为了让它当前工作,必须创建一个新的实例 T(即 Test),同时复制传递的实例。如果我可以将 Test 指向 T 的内存地址,那就太好了。
如果 Base 没有添加虚拟析构函数,并且由于 Test 没有添加任何内容,我认为这段代码实际上是可以的。但是,添加虚拟析构函数让我担心类型信息可能会添加到类中。如果是这种情况,那么它可能会导致内存访问冲突。
最后,我可以说这段代码在我的计算机/编译器(clang)上运行良好,尽管这当然不能保证它不会对内存造成坏事和/或不会在另一个编译器/机器上完全失败。