c++ dynamic_cast與static_cast使用方法示例
首先dynamic_cast:
#include <iostream>
using namespace std;
class A{
public:
virtual ~A(){} //使用dynamic_cast時(shí),必要!
};
class B:public A{
public:
B(){
m_b=12;
}
void foo(){
cout<<"B: "<<m_b<<endl;
}
private:
int m_b;
};
int main()
{
A *a=new B();
B *b=dynamic_cast<B*>(a);
b->foo();
delete a;
return 0;
}
上面沒(méi)有virtual ~A(){},編譯時(shí)會(huì)報(bào)錯(cuò):(source type is not polymorphic)。
static_cast:
#include <iostream>
using namespace std;
class A{
public:
A():m_a(32){}
void foo(){
cout<<"A: "<<m_a<<endl;
}
void setA(int a){
m_a=a;
}
private:
int m_a;
};
class B:public A{
public:
B(){
m_b=12;
setA(13);
}
void foo(){
cout<<"B: "<<m_b<<endl;
}
private:
int m_b;
};
int main()
{
A *a=new B();
B *b=static_cast<B*>(a);
A *aa=static_cast<A*>(b);
b->foo();
aa->foo();
delete a;
return 0;
}
打印a、b、aa地址,可知地址一樣。
- C++強(qiáng)制類(lèi)型轉(zhuǎn)換(static_cast、dynamic_cast、const_cast、reinterpret_cast)
- 淺析C++中dynamic_cast和static_cast實(shí)例語(yǔ)法詳解
- C++中的new/delete、構(gòu)造/析構(gòu)函數(shù)、dynamic_cast分析
- 由static_cast和dynamic_cast到C++對(duì)象占用內(nèi)存的全面分析
- C++中的類(lèi)型轉(zhuǎn)換static_cast、dynamic_cast、const_cast和reinterpret_cast總結(jié)
- C++ 中dynamic_cast<>的使用方法小結(jié)
- C++的dynamic示例代碼詳解
相關(guān)文章
Linux網(wǎng)絡(luò)編程之UDP Socket程序示例
這篇文章主要介紹了Linux網(wǎng)絡(luò)編程之UDP Socket程序示例,有助于讀者在實(shí)踐中掌握UDP協(xié)議的原理及應(yīng)用方法,需要的朋友可以參考下2014-08-08C語(yǔ)言實(shí)現(xiàn)可增容動(dòng)態(tài)通訊錄詳細(xì)過(guò)程
這篇文章主要為大家介紹了C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)易通訊錄的完整流程,此通訊錄還可以增容,并且每個(gè)環(huán)節(jié)都有完整代碼,有需要的朋友可以借鑒參考下,希望能夠有所幫助2022-05-05java實(shí)現(xiàn)任意四則運(yùn)算表達(dá)式求值算法
這篇文章主要介紹了java實(shí)現(xiàn)任意四則運(yùn)算表達(dá)式求值算法,實(shí)例分析了基于java實(shí)現(xiàn)表達(dá)式四則運(yùn)算求值的原理與技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-04-04C++中關(guān)于std::queue?中遇到釋放內(nèi)存錯(cuò)誤的問(wèn)題
這篇文章主要介紹了std::queue中遇到釋放內(nèi)存錯(cuò)誤的問(wèn)題,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-07-07C語(yǔ)言修煉之路悟徹?cái)?shù)組真妙理?巧用下標(biāo)破萬(wàn)敵上篇
在C語(yǔ)言和C++等語(yǔ)言中,數(shù)組元素全為指針變量的數(shù)組稱為指針數(shù)組,指針數(shù)組中的元素都必須具有相同的存儲(chǔ)類(lèi)型、指向相同數(shù)據(jù)類(lèi)型的指針變量。指針數(shù)組比較適合用來(lái)指向若干個(gè)字符串,使字符串處理更加方便、靈活2022-02-02C語(yǔ)言中pthread_exit和pehread_join的使用
pthread_exit用于強(qiáng)制退出一個(gè)線程,pthread_join用于阻塞等待線程退出,獲取線程退出狀態(tài),本文主要介紹了C語(yǔ)言中pthread_exit和pehread_join函數(shù)的使用,具有一定的參考價(jià)值,感興趣的可以了解一下2024-02-02