问题标签 [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.

0 投票
1 回答
2347 浏览

c++ - reinterpret_cast 和 null 成员变量

我正在使用这样的 reinterpret_cast :

在方法内部,我的大多数成员变量(所有句柄)都是空的。这可能是因为 reinterpret_cast 因为我知道它不能保证我使用相同的地址吗?就像 static_cast 一样。我知道我们应该在这种情况下使用 static_case,但是这个问题现在让我感兴趣了。

0 投票
2 回答
4535 浏览

c++ - 枚举的 reinterpret_cast 错误

为什么我不能对这样的演员使用 reinterpret_cast 运算符?

0 投票
5 回答
522 浏览

c++ - 关于 static_cast 的问题

我写了一段代码,但我对它的输出感到困惑:

输出是:

但据我所知,pb指向类型 B。并且其中没有命名函数disp()?那么,为什么它可以访问disp()D 类中的函数呢?

0 投票
1 回答
99 浏览

c++ - 常规转换不会引发运行时错误

如果我们看到下面的代码,fun 函数将 C 的对象转换为 B 的对象并调用 B 自己的函数。它怎么不给出段错误。我认为这会导致崩溃。我的程序没有崩溃。任何人都可以解释为什么它工作正常。

0 投票
4 回答
4558 浏览

c++ - static_cast 和 RTTI 与 dynamic_cast

请注意以下代码。据我所知,dynamic_cast 比 static_cast 慢。因为它在运行时评估类型。我的疑问是,如果我们将 static_cast 与 typeid() 一起使用如下,它是否需要与动态转换相同的时间?它会比 dynamic_cast 更快吗?

使用 RTTI 进行静态转换:

动态演员表:

0 投票
1 回答
173 浏览

c++ - 为什么我不能使用从一个 Xalan 类到其基类的 static_cast?

为什么编译器(g++)会抱怨这行代码?

我从编译器得到的错误是:

如果没有 static_cast,编译器会打印:

XalanElement 类定义为:

该文档还显示 XalanNode 应该从 XalanElement 派生,如您在此处所见 - XalanElement Class Reference

在 XalanDocument.hpp 中,getDocumentElement() 的方法签名是:

0 投票
4 回答
1413 浏览

c++ - 虚函数和 static_cast

在以下代码或UB的情况下,在多态类上使用static_cast后,我可以安全地调用虚函数吗?

0 投票
3 回答
306 浏览

c++ - static_cast 有什么区别(var) 和 *(int*)&var?

好的,所以我尝试这样做

现在我知道,在案例 2 中,第一个字节x被重新解释为认为它是一个整数,并且位模式被复制到b其中给出了一些垃圾,而在案例 1 中,它只是将值从 转换charint

除此之外,这两者之间有什么区别吗?

0 投票
3 回答
249 浏览

c++ - C++ 危险的铸造代码

我很确定这是危险的代码。但是,我想检查一下是否有人知道究竟会出现什么问题

假设我有这个类结构:

然后假设我想要一种自动扩展类的方法,如下所示:

我可以做出的一个非常重要的保证是,既没有Base也不Test会有任何其他成员变量或方法。它们本质上是空类。

(潜在的)危险代码如下:

做这样的事情的基本原理是我正在使用一个类似于 Test 的类,但是为了让它当前工作,必须创建一个新的实例 T(即 Test),同时复制传递的实例。如果我可以将 Test 指向 T 的内存地址,那就太好了。

如果 Base 没有添加虚拟析构函数,并且由于 Test 没有添加任何内容,我认为这段代码实际上是可以的。但是,添加虚拟析构函数让我担心类型信息可能会添加到类中。如果是这种情况,那么它可能会导致内存访问冲突。

最后,我可以说这段代码在我的计算机/编译器(clang)上运行良好,尽管这当然不能保证它不会对内存造成坏事和/或不会在另一个编译器/机器上完全失败。

0 投票
1 回答
1116 浏览

c++ - 用于包装类方法的回调函数和 static_cast