auto 和 decltype的區別

2021-07-25 06:51:21 字數 585 閱讀 4312

auto和decltype都是型別推斷的兩種方式,但之間又有區別。

主要有這幾個方面的區別:

1.auto是通過編譯器計算變數的初始值來推斷型別的,decltype同樣也是通過編譯器來分析表示式進而得到它的型別,但是它不用將表示式的值計算出來。

2.編譯器推斷出來的auto型別有可能和初始值型別不同,比如對於頂層const,auto會忽略頂層const性質,但是decltype是保留下來的,這在下面的**中會有所體現。

3.與auto不一樣,decltype的結果型別與表示式形式有密切關係。比如decltype()內層沒有括號,那麼得到的型別就是變數的型別,如果有多層括號decltype(())那麼返回的就是引用,具體可以通過**分析。

#include #include "sales_item.h"

int main()

執行第一段**的列印結果:

當然對於decltype和auto還有其他值得注意的地方,平常基本上會用不到就不再總結了。

auto 和 decltype 的區別

auto 和 decltype 都是型別推斷的方式 區別如下 1 auto 是通過編譯器計算變數的初始值來推斷型別,decltype同樣也是通過編譯器來分析表示式進而得到它的型別,但是它不用將表示式的值計算出來 2 編譯器推斷出來的auto型別可能與初始值型別不同,眾多周知,使用引用實際是使用引用的...

C 中關鍵字auto和decltype的區別

c 11標準引入了auto和decltype型別說明符,它能讓編譯器幫我們去分析表示式所屬的型別。auto和decltype的主要區別有三個方面 第一,auto型別說明符用編譯器計算變數的初始值來推斷其型別,而decltype雖然也讓編譯器分析表示式並得到它的型別,但是不實際計算表示式的值。第二,編...

C 之decltype和auto的用法

返回值 decltype 表示式 1 當表示式返回右值,則decltype返回該表示式的型別 2 當表示式返回左值,則decltype返回該表示式的左值引用型別 注 auto的用法 1 自動型別推斷 templatet,class u void myfunc t t,u u 2 返回值佔位。函式模板...