class Base
{
bool a;
};
class Derived : public Base
{
bool b;
};
void main()
{
std::shared_ptr<Base> base(new Derived());
}
所以在這個例子中,shared_ptr的原始指針將指向Base,NOT Derived的一個實例。我不明白。std :: shared_ptr的原始指針返回基地而不是派生的
class Base
{
virtual void foo() {}
bool a;
};
class Derived : public Base
{
virtual void foo() {}
bool b;
};
void main()
{
std::shared_ptr<Base> base(new Derived());
}
但是在這種情況下,shared_ptr的原始指針指向Derived?我確定我錯過了一些東西。有人可以向我解釋爲什麼會發生這種情況嗎?
指針在這兩種情況下指向「派生」實例。在這方面,共享指針與原始指針沒有區別。 – 2014-10-01 10:48:05
你如何確定它指向調試器?如果基類沒有至少一個虛函數,則某些信息不會嵌入類中以確定其類型,並且調試器可能無法推斷其派生類型。 – 2014-10-01 10:49:27
@NeilKirk即使類是多態的,我使用的調試器也不能推導出類型。(但是,當然,如果'Base'不是多態的,調試器就不可能知道它實際上是一個Derived'。 – 2014-10-01 13:46:56