我讀了幾篇關於使用靜態和動態演員的專題文章When should static_cast, dynamic_cast, const_cast and reinterpret_cast be used?以下C++轉換是否正確?
我對以下方式使用演員表有疑問。有人可以驗證下面提到的代碼: -
這是在繼承層次向上鑄造
template<class Base, class Derived>
inline Handle<Base> STATIC_CAST(Handle<Derived> hd) {
Handle<Base> hb;
Derived* dp = hd.get(); // Assume this gives pointer of derived class object
Base* bp = static_cast<Base*> (dp);
if(bp) {
hb = Ptr2Handle(bp); // Assume this give reference to Handle
}
return hb;
}
*衍生實際上是從基類派生類。
在下面的代碼中向下投射如何?
template<class Base, class Derived>
inline Handle<Derived> DYNAMIC_CAST(Handle<Base> hb) {
Handle<Derived> hd;
Base* bp = hb.get();
Derived* dp = dynamic_cast<Derived*> (bp);
if(dp) {
hd = Ptr2Handle(dp);
}
return hd;
}
如果上述兩個MACROS通過Base和Derived類交換傳遞,會有什麼影響?
是基礎派生的相關類型嗎? – Naveen 2009-11-27 17:49:53