相关疑难解决方法(0)

FAQ:为什么dynamic_cast仅在一个类至少有一个虚方法时才有效?

这不能用C++编译:

class A
{
};

class B : public A
{
};

...

A *a = new B();
B *b = dynamic_cast<B*>(a);
Run Code Online (Sandbox Code Playgroud)

c++ dynamic-cast c++-faq

18
推荐指数
3
解决办法
9501
查看次数

在C++中使用'static_cast'进行向下转换

考虑:

class base
{
    base();
    virtual void func();
}

class derived : public base
{
    derived();
    void func();
    void func_d();
    int a;
}


main
{
    base *b = new base();
    sizeof(*b); // Gives 4.
    derived * d = static_cast<derived*>(b);
    sizeof(*d); // Gives 8- means whole derived obj size..why?
    d->func_d();
}
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,我做了一个基指针的向下转换,它指向基对象到派生类指针.我想知道派生指针如何具有整个派生类对象.我可以调用派生类函数(仅在派生类中声明).我没有在这里得到这个概念.

c++

14
推荐指数
3
解决办法
2万
查看次数

标签 统计

c++ ×2

c++-faq ×1

dynamic-cast ×1