C++型別推導

ydqun發表於2024-08-20

C++11引入了auto和decltype關鍵字實現型別推導,透過這兩個關鍵字不僅能方便地獲取複雜的型別,還能簡化書寫,提高編碼效率。

1.auto型別推導

1.1 auto關鍵字的新意義

在go語言中,在方法範圍中宣告的變數可以具有型別推導,例如:

var i = 10;    //在go中自動型別推導變數i為int型

而C++11中也擁有了類似的功能:auto型別推導,其寫法如下:

auto i = 10;

下面我們看一下auto的一些基本用法:

auto x = 5;                    //OK: x是int型別
auto pi = new auto(1);         //OK: pi被推導為int*
const auto *v = &x;            //OK: v是const int*型別,u是const int型別
static auto y = 0.0;           //OK: y是double型別
auto int r;                    //error: auto不再表示儲存型別指示符
auto s;                        //error: auto無法推匯出s的型別

在上面的示例中:
1)字面量5是一個const int型別,變數x將被推導int型別(const被丟棄,後面說明),並被初始化為5;
2) pi的推導說明auto還可以用於new運算子,在例子中,new運算子後面的auto(1)被推匯出int(1),因此pi的型別是int;
3) 由&x的型別為int
,推匯出const auto中auto應該是int,於是v被推到const int,而u則被推導為const int。

相關文章