我有 2 节课:
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
信息吗?还是运行时环境足够聪明,可以确定我实际上是从哪里调用getStr
的 MyRealClass
?
ptr->getStr();
或其他类似的东西static_cast<MyRealClass*>(ptr)->getStr();
,甚至dynamic_cast<MyRealClass*>(ptr)->getStr();
?
一般来说,如果我们使用一个指向抽象基类的指针,而不仅仅是一个简单的(真正的)基类,我们真的需要强制转换吗?