15得票2回答
C++中的dyn_cast与dynamic_cast有何区别?

在我正在处理的代码库中,我经常遇到 dyn_cast。它是否与 dynamic_cast 相同,还是有所不同?我进行了一些搜索,但没有找到太多信息。

15得票3回答
如何检查两个指针是否指向同一个对象?

考虑两个指针 A* a; B* b; A和B都是多态类。如何检查a和b是否指向同一对象? 更精确地说,如果存在类型为D的对象d,使得*a和*b都在d的类层次结构中,则指定a和b指向同一对象。 我建议采用以下解决方案: dynamic_cast<void*>(a) =...

14得票2回答
C++:比较基类和派生类的指针

我想了解一些有关在如下情况下比较指针的最佳实践:class Base { }; class Derived : public Base { }; Derived* d = new Derived; Base* b = dynamic_cast<Base*>(d); /...

14得票4回答
从基类到派生类的 `dynamic_cast`

是的,我知道使用 dynamic_cast 进行向下转型如果 Base 不具备多态性将无法编译,但我的问题并不是关于这个。class Base { public: virtual void bar() { cout <&lt...

13得票4回答
C++动态转型——多态要求和向下转型

在下面的代码中,在情况1构建obj时,我们同时构建了一个derived类对象,但其成员函数对obj是不可访问的。所以在向下转换(即情况2)时,使用obj作为源时,我们已经有了构造好的derived。为什么obj需要是多态的? 如果我的上述描述让你感到困惑,那么为什么在向上转型时obj不需要是...

13得票1回答
为什么C++编译器不对来自final类的dynamic_cast进行优化?

考虑下面的类层次结构: struct Animal { virtual ~Animal(); }; struct Cat : virtual Animal {}; struct Dog final : virtual Animal {}; 我的理解是在 class Dog 上加上 fin...

13得票4回答
dynamic_cast在使用dlopen/dlsym时失败

简介 首先我要为这个问题的长度道歉,尽管我已经尽可能地简化了它,但它仍然很长。 设置 我定义了两个接口,A和B:class A // An interface { public: virtual ~A() {} virtual void whatever_A()=0; }; ...

13得票2回答
使用dynamic_cast强制转换const的类

我想进行强制类型转换:class Base { public: virtual ~Base(){}; }; class Der : public Base {}; int main() { const Base* base = new Der; Der* der =...

13得票1回答
智能指针和dynamic_cast

如果这个问题已经有答案了,我提前道歉,因为我找不到答案。 注意:这是一项作业任务,如果你觉得不舒服回答,我完全理解。 我有以下内容: ptr.h: template<typename T> class Ptr { T* address; size_t* co...

13得票5回答
C++中dynamic_cast的实际应用举例

有没有人能给我一个现实世界中需要使用dynamic_cast并且不能完全通过双重分派来解决的案例?我能想到的例子通常都可以通过双重分派来解决。 如果限制太强了,一个通常需要使用dynamic_cast的示例也会很好。 我想看到真正的例子,而不是“它通常用于类型树上下转换的强制类型转换”。