我读通过一些有效的C++,我意识到我可能是我前进的道路上思想不正确。关于动态演基地的地址和派生对象
class A
{
public:
void laka()
{
const void * raw = dynamic_cast<const void*>(this);
cout << raw << endl;
}
virtual ~A() = 0;
};
A::~A() {}
class B : public A
{
public:
void ditka() {}
};
int _tmain(int argc, _TCHAR* argv[])
{
B b;
cout << &b << endl;
b.laka();
return 0;
}
书指出,通过使用dynamic_cast的有*空,我会得到一个物体的起始地址然而,所有相同的地址输出的。
当我只输出上述普通的旧& B的地址,是地址显示的派生对象或b内的基本对象的起始地址?
如果我是不正确的或错误关于#1,我怎么会得到在b中的每个子对象的起始地址?我是否需要手动抵消以及dynamic_cast如何处理这个问题,或者只是澄清作者的意思?
啊,所以如果我有A 将导致指向最大派生的指针在这种情况下是指向D的指针。我正确吗? – Ilya 2011-05-14 23:29:15
@伊利亚:是的,你是对的。 – 2011-05-14 23:37:42
好的,谢谢。得到它了。 – Ilya 2011-05-14 23:37:53