真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

dynamic_cast和static_cast的異同

dynamic_cast和static_cast是C++中的運(yùn)行時類型轉(zhuǎn)換運(yùn)算符,代碼如下:

我們提供的服務(wù)有:網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、開化ssl等。為上千家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的開化網(wǎng)站制作公司

class A
{
public:
	INT  data;
    virtual void test() {};
};

class C
{
public:
	virtual void show() {

	}
};

class B :public A
{
public:
	void test() {
		AfxMessageBox(_T("ok"));
	}

};
//調(diào)用如下:
void CtestThreadDlg::OnBnClickedButton14()
{
	A *pA = new A ;
	pA->data = 21;

	C * pC = new C;
	B *pB = dynamic_cast(pC);
	INT  c = pB->data;
	pB->test();
}

1、對于有繼承關(guān)系的兩個類:
   (1)子類轉(zhuǎn)成父類dynamic_cast和static_cast都沒有問題.
   (2)父類轉(zhuǎn)成子類,dynamic_cast要求父類中有虛函數(shù),否則編譯不通過。static_cast不作此要求,編譯通過。
       在有虛函數(shù)的前提下,如果父類指針的確實(shí)指向的是子類實(shí)例,dynamic_cast轉(zhuǎn)換成功,否則返回NULL;
       static_cast對于轉(zhuǎn)換前的指針是否指向?qū)嶋H子類實(shí)例,不作要求,都能轉(zhuǎn)換成功。     
   (3)在編譯通過成功,且返回指針不為空的前提下,兩者轉(zhuǎn)換結(jié)果指針,都可以用來讀寫父類和子類成員函數(shù)和變量。
   (4)如果父類指針不是指向子類實(shí)例,編譯都能通過,但是dynamic_cast返回為NULL,不能操作對象;
       static_cast返回非空指針,可以讀寫父類成員變量,也能調(diào)用其成員函數(shù)。子類的成員函數(shù)可以調(diào)用,但是當(dāng)操作涉及子類成員變量時候,不成功。

2、對于沒有繼承關(guān)系的兩個類
       static_cast可以編譯通過,dynamic_cast不能編譯通過。兩者都不能讀寫成員變量和函數(shù)。


文章題目:dynamic_cast和static_cast的異同
本文來源:http://weahome.cn/article/pshsds.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部