C++のautoはちょっと違う気がする

注意: この記事は1年以上前に掲載されたものです。情報が古い場合がありますのでお気を付け下さい。

C++では型推論を使う型として、autoが使われているが、これは個人的にはなんだか悪手だなと考えている面がある。というのは、他の言語でよくある変数宣言と微妙に違うこと、なおかつC言語と競合する書き方になっているからである。

C++における型推論の変数宣言は以下のように書かれる。

auto foo = 0;
auto var = "Hello,world";

これによって、intchar *といった、型宣言を省略することができるようになる。一方、それが意図した通りの型にならないことがあって、混乱を招く恐れがある。

ただ、これについては、SwiftやC#をはじめとした型推論のあるプログラミング言語でも起こることであるため、それほど問題にはならない。

それ以上に問題なのは、C言語の自動変数の宣言とキーワードが同じということである。基本的に、ブロック内の変数は全て自動変数であり、多くの人はわざわざauto int foo = 0;といったような書き方はしないだろう。

しかしながら、CとC++で同じキーワードが別の意味を持っていることから、それぞれの言語の互換性において問題が発生してしまっている。

個人的にはなぜvarにしなかったのかが疑問ではあるが、「自動的に型を判定する」という意味合いからこのようにしたということなのだろうか?

タイトルとURLをコピーしました