首页 > C++重写虚函数的问题

C++重写虚函数的问题

Card* Bank::CreateCard(char *name, char *password, int cardType)
{
    int cardID;
    Card *newCard;
    if(cardType == 2)
    {
        CreditCard creditCard(CardNum, name, password);
        cards[CardNum] = creditCard;

        newCard = &creditCard;
        newCard->Deposit(20);  //  这里会调用 CreditCard 的 Despoit()
    }
    else
    {
        return NULL;
    }
    newCard->Deposit(20);  //  这里会调用 Card 的 Despoit()
    return newCard;
}

如上,注释所描述的,为什么底部的 newCard 不会调用子类 CreditCard 的 Despoit(),刚学 C++,一直找不到解决方法,先谢了。。。


creditCard超出作用域了!已经被析构了!


Card类的Despoit()方法是否已声明为虚函数?
另外,creditCard是堆栈上创建的实类,当它的生命周期(这里是if语句的作用域)中的结束后,newCard将会变成悬挂指针。

【热门文章】
【热门文章】