兩類比方說,我們有兩大類:的dynamic_cast:具有幾乎相同的方法
class A:
{
A(int a); // c'tor
virtual ~A(); // d'tor
FirstMethod(...);
SecondMethod(...);
}
class B:public A
{
B(int a); // c'tor
~B(); // d'tor
FirstMethod(...);
SecondMethod(...);
}
這兩個類A和B具有完全相同的方法(相同的名稱和參數,但不一定是相同的功能)和成員,除了析構函數的名稱和構造函數的名稱不同外。現在 ,假設我們有一個對象:
A* aObject = new A();
,我們做到:
B* bObject= dynamic_cast<B*>(aObject);
請問最後成功鑄造或bObject將是NULL?換句話說,程序能區分A *類型的對象和B *類型的對象嗎?
你可以隨時檢查它是否是一個錯誤的指針或抓住'std :: bad_cast'。所以我會重申你的問題。另一方面說明,你的代碼不能編譯。析構函數不能有參數。 – 2014-01-23 02:06:12
我不好好回答而不去思考,它被刪除了。實際上,'dynamic_cast'與'具有相同的基類'沒有關係。它用於將指針從基類轉換爲派生類,而不是派生類之間。 – xis
@蘇小格,問題是編輯的,B是從A – user2750466