首頁 > 後端開發 > C++ > 主體

C 11 中「auto」什麼時候推導出數值和引用?

Patricia Arquette
發布: 2024-11-03 08:40:03
原創
756 人瀏覽過

When Does

C 11「auto」語意

在C 11 中,「auto」關鍵字允許編譯器自動推導a 的類型多變的。在確定「auto」是否會產生值類型或參考類型時,了解此推導的規則至關重要。

值和引用的類型推導

主要控制類型推導的原則是「auto」的類型由它的聲明方式決定。例如:

<code class="cpp">int i = 5;
auto a1 = i;    // value
auto &a2 = i;  // reference</code>
登入後複製

在上面的範例中,「a1」被推導為整數值,而「a2」被推導為整數引用。

範例

1。回傳引用:

<code class="cpp">const std::shared_ptr<Foo>& get_foo();
auto p = get_foo();</code>
登入後複製

在這種情況下,「auto」推導出引用類型,因為「get_foo()」傳回 const 引用。

2.靜態指標:

<code class="cpp">static std::shared_ptr<Foo> s_foo;
auto sp = s_foo;</code>
登入後複製

這裡,「auto」推導出值類型,因為「s_foo」是靜態指針,不是引用。

3.循環指標容器:

<code class="cpp">std::vector<std::shared_ptr<Foo>> c;
for (auto foo : c) {</code>
登入後複製

在此循環中,「auto」確保「foo」被推導為指向 Foo 的共用指標。每次迭代都會建立指標的值副本。

結論

總而言之,C 11 中「auto」的類型推導規則很簡單。如果初始化表達式是一個值,則「auto」會推導出值類型。如果初始化表達式是引用,則「auto」推導出引用類型。了解這些規則對於有效使用「自動」並避免意外行為至關重要。

以上是C 11 中「auto」什麼時候推導出數值和引用?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板