相关疑难解决方法(0)

动态转换是否有实际用途来指向无效指针?

在C++中,T q = dynamic_cast<T>(p);构造执行指向p其他指针类型的指针的运行时强制转换,该指针类型T必须出现在动态类型的继承层次结构*p中才能成功.这一切都很好,很好.

但是,也可以执行,它只dynamic_cast<void*>(p)返回指向"最派生对象"的指针(参见C++ 11中的5.2.7 :: 7).我知道这个功能可能在动态转换的实现中免费提供,但它在实践中是否有用?毕竟,它的返回类型充其量void*只是,这有什么用呢?

c++ dynamic-cast

72
推荐指数
2
解决办法
4309
查看次数

使用相同的变量销毁然后构造新对象

有时重新开始很好.在C++中,我可以使用以下简单的操作:

{

    T x(31, Blue, false);

    x.~T();                        // enough with the old x

    ::new (&x) T(22, Brown, true); // in with the new!

    // ...
}
Run Code Online (Sandbox Code Playgroud)

在范围的最后,析构函数将再次运行,一切似乎都很好.(我们也说T有点特别,不喜欢被分配,更不用说交换了.)但有些东西告诉我,摧毁一切并再试一次并不总是没有风险.这种方法有可能存在吗?

c++ placement-new

28
推荐指数
4
解决办法
1899
查看次数

标签 统计

c++ ×2

dynamic-cast ×1

placement-new ×1