2
在沒有任何虛擬功能的類層次結構中,由於dynamic_cast
沒有爲RTTI存儲任何信息,它會表現爲簡單的static_cast
,否則會出現錯誤?如果沒有單個虛函數,dynamic_cast是否像static_cast一樣工作?
在沒有任何虛擬功能的類層次結構中,由於dynamic_cast
沒有爲RTTI存儲任何信息,它會表現爲簡單的static_cast
,否則會出現錯誤?如果沒有單個虛函數,dynamic_cast是否像static_cast一樣工作?
可以很容易地檢查:
class A {};
class B : public A {};
int main(int argc, char **argv) {
A* a = new B();
B* b = dynamic_cast<B*>(a);
}
G ++說:
error: cannot dynamic_cast 'a' (of type 'class A*') to type 'class B*' (source type is not polymorphic)
BTW對於這種問題我覺得online llvm-gcc demo有用。
這個問題有一個簡單的答案:嘗試一下。這個特定問題的測試是微不足道的。 – 2011-01-26 15:13:53
是的,這就是我對vitaut給出的答案所評論的。 – rkb 2011-01-26 15:21:39