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将会变成悬挂指针。