亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区
Chinaunix
標(biāo)題:
請教一個(gè)運(yùn)行時(shí)確定類型的問題,謝過先
[打印本頁]
作者:
alarum
時(shí)間:
2006-07-28 14:59
標(biāo)題:
請教一個(gè)運(yùn)行時(shí)確定類型的問題,謝過先
class BaseType
{
......
};
class SubTypeA1 : public BaseType
{
.......
};
class SubTypeA2 : public BaseType
{
.......
};
.....若干個(gè)子類
復(fù)制代碼
定義一個(gè)函數(shù),使用基類指針作為輸入?yún)?shù)。在函數(shù)中需要new一個(gè)對象并用輸入的對象進(jìn)行深拷貝構(gòu)造。
同時(shí)將輸入的對象銷毀
int function(BaseType* rstBaseType)
{
.......
/*使用深拷貝構(gòu)造一個(gè)對象*/
new SubTypeX(rstBaseType);
delete rstBaseType;
......
}
復(fù)制代碼
可以明確知道的是輸入對象一定是某一個(gè)子類。
1、現(xiàn)在的問題是后面的處理需要獲得輸入對象的確定類型,請問有什么方法可用?
2、請問哪位仁兄了解typeid,typeof,以及dynamic_cast的用法,請指教,多謝
作者:
hezhiroy
時(shí)間:
2006-07-28 16:57
int function(BaseType* rstBaseType)
{
......
if(NULL!=dynamic_cast<SubTypeA1*>(rstBaseType))
{
//SubTypeA1
}
else if(NULL!=dynamic_cast<SubTypeA2*>(rstBaseType))
{
//SubTypeA2
}
else
{
//BaseType
}
delete rstBaseType;
......
}
復(fù)制代碼
作者:
noho
時(shí)間:
2006-07-28 17:17
class BaseType 提供Clone純虛函數(shù),SubTypeX override這個(gè)函數(shù),是通常的做法
int function(BaseType* rstBaseType)
{
.......
/*使用深拷貝構(gòu)造一個(gè)對象*/
rstBaseType->Clone();
delete rstBaseType;
......
}
作者:
alarum
時(shí)間:
2006-07-29 11:02
多謝2位的指點(diǎn),還想請問一下,如果想詳細(xì)了解一下<typeinfo>,哪里能搞到一些資料?
另外還有一個(gè)問題,如果函數(shù)傳入的是一個(gè)void類型的指針,使用強(qiáng)制轉(zhuǎn)換后得到基類指針。還能不能支持多態(tài)?dynamic_cast這樣的操做是不是總是有效?
回頭寫個(gè)例子試一下,那位仁兄如果了解多態(tài)的實(shí)現(xiàn)機(jī)制,不妨賜教,多謝
歡迎光臨 Chinaunix (http://www.72891.cn/)
Powered by Discuz! X3.2