生活随笔
收集整理的這篇文章主要介紹了
金山WPS面经 c++开发工程师
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
- 虛函數(shù)的底層實現(xiàn):虛函數(shù)表和虛函數(shù)指針
- 構(gòu)造函數(shù)和析構(gòu)函數(shù)能不能調(diào)用虛函數(shù)
不能https
://blog
.csdn
.net
/u012611878
/article
/details
/78956329
- 四種強制類型轉(zhuǎn)換
四種強制類型轉(zhuǎn)換
static_cast主要用于“低風(fēng)險”的類型轉(zhuǎn)換,如整數(shù)、浮點數(shù)和字符類型的轉(zhuǎn)換
reinterpret_cast各種不同類型的指針之間、不同類型的引用之間以及指針和能容
納指針的整數(shù)之間的轉(zhuǎn)換
; 卻不保證安全性
const_cast運算符主要是為了去除
const屬性
dynamic_cast專門用于將多態(tài)基類類型的指針強制轉(zhuǎn)換為派生類類型的指針,而且
能夠檢查轉(zhuǎn)換的安全性,對于不安全的轉(zhuǎn)換,返回一個
nullptr
- c++11為什么要新增四種強制類型轉(zhuǎn)換?
強制類型轉(zhuǎn)換具有一定風(fēng)險,如:把整型轉(zhuǎn)換為指針類型、將基類
指針轉(zhuǎn)換為派生類指針、將一種函數(shù)指針轉(zhuǎn)換為另一種函數(shù)指針,
將常量指針轉(zhuǎn)換為非常量指針等。C
++新引用四種強制類型轉(zhuǎn)換主要是為了
**規(guī)避這種風(fēng)險
**:a
. 將
int轉(zhuǎn)換為
double是沒有風(fēng)險的,而將常量指針轉(zhuǎn)換為非常量指針,將
int轉(zhuǎn)換為指針類型都是高風(fēng)險的,C中并未對這兩種情況作區(qū)分b
. 將多態(tài)的基類指針轉(zhuǎn)換為派生類指針時并不檢查安全性,無法判斷轉(zhuǎn)換后的指針是否指向一個派生類對象c
. 如果強制類型轉(zhuǎn)換出錯,很難排查出錯誤
- 什么時候會用拷貝構(gòu)造,什么時候用賦值構(gòu)造
在C++中,下面三種對象需要調(diào)用拷貝構(gòu)造函數(shù)(有時也稱“復(fù)制構(gòu)造函數(shù)”):1) 一個對象作為函數(shù)參數(shù),以值傳遞的方式傳入函數(shù)體;2) 一個對象作為函數(shù)返回值,以值傳遞的方式從函數(shù)返回;3) 一個對象用于給另外一個對象進(jìn)行初始化(常稱為復(fù)制初始化);String a("hello"); String b("world"); String c = a; // 調(diào)用了拷貝構(gòu)造函數(shù),最好寫成 c(a); c = b; // 調(diào)用了賦值構(gòu)造函數(shù)
**https://blog.csdn.net/zyq11223/article/details/48766515有時候我們會遇到這樣一種情況,我們用對象a初始化對象b,后對象a我們就不在使用了,但是對象a的空間還在呀(在析構(gòu)之前),既然拷貝構(gòu)造函數(shù),實際上就是把a對象的內(nèi)容復(fù)制一份到b中,那么為什么我們不能直接使用a的空間呢?這樣就避免了新的空間的分配,大大降低了構(gòu)造的成本。這就是移動構(gòu)造函數(shù)設(shè)計的初衷。下面這個圖,很好地說明了拷貝構(gòu)造函數(shù)和移動構(gòu)造函數(shù)的區(qū)別。移動構(gòu)造是一份;拷貝構(gòu)造是兩份;**
IntNum(IntNum
&& n
):xptr(n
.xptr
){n
.xptr
= nullptr; cout
<<"Calling move constructor..."<<endl
;
}
總結(jié)
以上是生活随笔為你收集整理的金山WPS面经 c++开发工程师的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。