对堆栈与堆上的派生类对象使用基类指针

Ran*_*der 2 c++ pointers class base

我有一个关于使用基类指针分配派生类对象的问题...

class Base 
{ 
    void print() { cout<<"Class Base"; }

};

class Derived: public Base
{ 
    void print() {  cout<<"class Derived"; }

};

int main()
{
    Base b, *bp;
    Derived d, *dp;

    b.print();
    d.print();
    bp = d; // why is this a conversion error? getting an error "cannot convert ‘Derived’ to ‘Base*’ in assignment"

    bp = new B(); // this works fine...

}    
Run Code Online (Sandbox Code Playgroud)

这是否意味着我们只能将动态分配的派生类对象分配给基类指针?为什么会这样???

Bre*_*ale 7

bp这是一个指针,你试图为它分配一个对象.请尝试分配该对象的地址:bp = &d;