我有2類:指向抽象基類的指針需要一些轉換? C++
class MyAbstractClass
{
public:
virtual const std::string& getStr() const =0;
}
class MyRealClass : public MyAbstractClass
{
public:
virtual const std::string& getStr() const { return m_str;};
private:
std::string m_str;
}
我在主:
MyAbstractClass* ptr = new(MyRealClass("some string"));
我想通過一個指針存儲在MyRealClass
基類字符串信息。 我需要投下ptr
到MyRealClass
才能獲取信息嗎?或運行時環境將足夠聰明,以找出我實際上從MyRealClass
調用getStr
?
ptr->getStr();
或其他類似static_cast<MyRealClass*>(ptr)->getStr();
甚至dynamic_cast<MyRealClass*>(ptr)->getStr();
?
一般來說,如果我們使用的是一個指向Abstract基類的指針,而不僅僅是一個簡單的(真實的)基類,那麼我們是否真的需要進行轉換?
你有沒有嘗試過這些替代方法?有工作嗎?有沒有失敗? –
請在編譯之前編譯您的代碼! –
請注意,您可以刪除'new'語句中的一半括號,它仍然意味着同樣的事情。 –