当たり障りのない基本型への参照を保持する配列があります。それを呼び出しましょうObject
。
Class1
私はから派生Object
しClass2
ましたClass1
。
#include <vector>
class Object {};
class Class1 : public Object {
public:
virtual std::string ToString() {return "it is 1";}
};
class Class2 : public Class1 {
public:
virtual std::string ToString() {return "it is 2";}
};
int _tmain(int argc, _TCHAR* argv[])
{
std::vector<Object *> myvec;
myvec.push_back(new Class2());
printf("%s", (static_cast<Class1*>(myvec[0]))->ToString().c_str());
return 0;
}
ToString()
私はキャストしObject *
て電話しClass1 *
ます
printf("%s", (static_cast<Class1*>(myvec[0]))->ToString().c_str());
私の質問は、オブジェクトが実際にあるClass2
が、具体的にはそれにダウンキャストされていない場合、この出力は1または2になるのでしょうか?キーワードはvirtual
意図した効果を持っていますか?