相关疑难解决方法(0)

什么时候应该使用static_cast,dynamic_cast,const_cast和reinterpret_cast?

有什么用途:

  • static_cast
  • dynamic_cast
  • const_cast
  • reinterpret_cast
  • C风格演员 (type)value
  • 功能式演员 type(value)

如何决定在哪些特定情况下使用哪个?

c++ pointers casting c++-faq

2367
推荐指数
9
解决办法
52万
查看次数

static_cast和对指针的引用

任何人都可以告诉我为什么这不编译:

struct A { };
struct B : public A { };

int main()
{
  B b;
  A* a = &b;
  B* &b1 = static_cast<B*&>(a);
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

现在,如果你用以下方法替换静态强制转换:

B* b1 = static_cast<B*>(a);
Run Code Online (Sandbox Code Playgroud)

然后它确实编译.

编辑:显然编译器将处理A*B*作为独立类型,否则这将起作用.问题更多的是为什么这是可取的?

c++ pointers reference const-cast

4
推荐指数
1
解决办法
1653
查看次数

标签 统计

c++ ×2

pointers ×2

c++-faq ×1

casting ×1

const-cast ×1

reference ×1