我有一个数组,其中包含对平淡基本类型的引用,我们称之为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
关键字是否具有预期效果?