在源代码中,我得到了这个C风格的转换:
我猜测
在C++中,我该如何做到这一点?
谢谢!
unsigned long test = 0;
long & truc = (long&)test;
我猜测
&truc
使用long
类型的地址传递test参数。在C++中,我该如何做到这一点?
谢谢!
unsigned long test = 0;
long & truc = (long&)test;
&truc
使用long
类型的地址传递test参数。Derived d;
Base& b = (Base&)d;
static_cast
:Derived d;
Base& b = static_cast<Base&>(d);
assert(dynamic_cast<T*>(ptr) != nullptr);
try {
dynamic_cast<T&>(*ptr);
}
catch (const std::bad_cast&) {}
在符合两者范围的情况下,
long
和unsigned long
之间的别名是允许的([basic.lval] 10)。但最好还是避免使用。-Sneftel
long
或者如果你使用的是 unsigned long
,则适用于 unsigned long
。 - Lightness Races in Orbit
(long &)test
获取一个引用到long
类型的变量,该引用指向test
。它不会计算地址。虽然它使用类似于 C 的“强制转换”语法,但它不是 C 风格的强制转换,因为 C 不支持引用类型。在 C 中,您的代码将无法编译。 - Peterreinterpret_cast<long&>(test);
- Jarod42