C++11キーワードauto

1275 ワード

その場合はタイプを明記します
変数タイプの定義
関数の戻り値、関数パラメータ
式は変数タイプを返します
autoキーワードの原理
変数を定義する際にはタイプを明記しなければならない.c++は強い言語タイプであり、コンパイル段階ではタイプを知る必要がある.このような利点は、プログラム効率が高く、動的言語がタイプを明記する必要がない場合は、変数タイプを自己導出する必要がないことである.autoを使うとc++の効率が遅くなるのではないでしょうか.まったくそうではありません.コンパイラはコンパイラに変数のタイプを導いてくれたからです.前提条件は,コンパイラが現在のプログラムの状態に基づいて変数タイプを導出できることである.コンパイラがもっとスマートなだけで、コンパイル時間はもっと長くないと思います.
autoキーワード使用シーン
シーン1、一般変数を明らかにする
auto num = 10; 

シーン2、関数は値を返して、autoがなければ、いつも巧みにそんなに長い戻り値を要して、autoのキーワードがあった後で、心の中でとても気持ちがいいかどうか.
vector str_vec;
vector::iterator it_old = str_vec.begin();
auto it_new  = str_vec.begin();

シーン3、関数の戻り値を宣言
auto add(int a, int b)->int {
     return a + b;
}

autoの使用に注意すべきいくつかの問題
1、autoキーワードを使用する変数には初期値が必要で、コンパイラは変数タイプを導出することができます.
2、const変数を渡すときはautoを使って自分でconstを付けなければならない
const int a =10;
auto b = a;                // b    int
const auto c = a;      // c     const int

3、奇抜な関数の戻り値について
autoキーワードは、関数の戻り値でのみautoキーワードを使用でき、関数の最後に戻りタイプをマークする必要があります.
これは奇抜に見えますが、autoキーワードを使わないほうがいいと思いますが、委員会の人はそんなに暇ではないと思います.googleで調べてみると、次の2つの理由があります.
1、彼らは戻り値を関数の後ろに置くほうがきれいだと思っている(特に戻り値が長い場合)
2、C++14は煩わしい戻り値を取り除き、コンパイラは直接自己導出をサポートする
.