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;
}
上面沒有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)制類型轉(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++中的類型轉(zhuǎn)換static_cast、dynamic_cast、const_cast和reinterpret_cast總結(jié)
- C++ 中dynamic_cast<>的使用方法小結(jié)
- C++的dynamic示例代碼詳解
相關(guān)文章
深入解析C++11?lambda表達(dá)式/包裝器/線程庫(kù)
這篇文章主要介紹了C++11?lambda表達(dá)式/包裝器/線程庫(kù)的相關(guān)知識(shí),本文通過示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-05-05
C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單航班管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單航班管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-12-12
C++11/14 線程調(diào)用類對(duì)象和線程傳參的方法
這篇文章主要介紹了C++11/14 線程調(diào)用類對(duì)象和線程傳參的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-01-01
C語(yǔ)言調(diào)用go生成的動(dòng)態(tài)庫(kù)的踩坑過程解析
這篇文章主要為大家介紹了C語(yǔ)言調(diào)用go生成的動(dòng)態(tài)庫(kù)的踩坑過程解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-09-09
C/C++實(shí)現(xiàn)獲取硬盤序列號(hào)的示例代碼
獲取硬盤的序列號(hào)、型號(hào)和固件版本號(hào),此類功能通常用于做硬盤綁定或硬件驗(yàn)證操作,下面我們就來學(xué)習(xí)一下如何使用C/C++實(shí)現(xiàn)獲取硬盤序列號(hào)吧2023-11-11
VSCode保存代碼自動(dòng)格式化無(wú)效的解決方法
最近一直使用vscode,VSCode中各種配置后,自動(dòng)保存格式化仍然無(wú)效,本文就來介紹一下解決方法,感興趣的可以了解一下2023-08-08
基于Matlab實(shí)現(xiàn)離散系統(tǒng)分岔圖的繪制
這篇文章主要介紹了如何利用Matlab實(shí)現(xiàn)離散分岔圖的繪制,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Matlab有一定的幫助,需要的可以參考一下2022-04-04

