【プログラミング言語C++ by Bjarne Stroustrup】第2章 C++を探検しよう:基本

変数の初期化

  • =で初期化する形式がCから伝統的に行われてきたが,
  • どれを使うか迷うのなら,並びを{}で囲む形式の方を使うとよい.
    • 情報が欠落する縮小変換を避けられる.
int i1 = 7.2;   // 縮小変換
int i2 {7.2};   // エラー:浮動小数点から整数への変換
int i3 = {7.2}; // エラー:浮動小数点から整数への変換
  • わざわざ型を明示スべき特殊な事情がない限りは,autoを用いると良い.
  • 特殊な事情とは
    • その定義が巨大なスコープ中にあり,その型をプログラムの読み手に伝わりやすくしたい
    • 変数の値の範囲や精度を明示したい(floatではなくdoubleにしたことなど)

constとconstexprの違い

  • C++の定数は2種類ある
    • コンパイル時定数
      • コンパイル時に値が決定されると規格によって定められた定数
      • 固定長配列のサイズやテンプレート引数に指定することができるのは、コンパイル時定数のみ
      • C++ において、非 constexpr 変数がコンパイル時定数になるのは、const 修飾された整数型(enum を含む)のみ
    • 実行時定数

  • constとconstexpr
    • constexpr修飾されるとコンパイル時定数となる
    • const修飾されると実行時定数

アドバイ

  • あわてるな!時とともに全てが明らかになるのだから
  • よいプログラムを書くのに,C++のすべての詳細を知る必要はない
  • 言語機能ではなく,プログラミング技法に集中しよう