我讀通過一些有效的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