カワサキの技術ブログ

エンジニア志望によるゆるゆる備忘録。

【新・明快C++入門】学習メモ(6-2,3,4章)

『新・明快C++入門』第6章(関数)

6-2 「参照と参照渡し」(p216~221)

参照オブジェクト

  • 型名& 変数名 初期化子;
int x = 10;
int& y = x;    // yはxを参照
  • yに対してxの別名(エイリアス)を与える。
  • 詳細は後日別記事にする(かも)。

6-3 「有効範囲と記憶域期間」(p222~229)

有効範囲

Javaで勉強した「グローバル変数」「ローカル変数」と同じ概念

ファイル有効範囲
  • 識別子が宣言された直後からソースファイル終わるまでで利用可能
ブロック有効範囲
  • 識別子が宣言された直後から、それを含むブロック終端までで利用可能

記憶域期間

静的記憶域期間
  • staticを用いて関数内で宣言されたオブジェクト(変数)はプログラム終了まで破棄されない
//関数内での宣言
static int a;
  • 関数が何度呼び出されても、staticをつけて宣言された変数の値は前回呼出し終了時の値が引き継がれる。
自動記憶域期間
  • 関数内でstaticを用いずに宣言されたオブジェクト(変数)。
  • プログラムが宣言されたブロック内を過ぎるとオブジェクトは破棄される。

6-4 「多重定義とインライン関数」(p230~235)

関数の多重定義

  • 仮引数の個数や種類が異なる同名の関数を定義することができる(Javaにおけるメソッドのオーバーロードと同じ)。
  • 仮引数の並び、個数をシグネチャという。

インライン関数

  • inline 戻り値の型 識別子(引数)
// インライン関数の宣言
inline void sum(int a, int b);
  • コンパイル時に関数の中身が展開されて埋め込まれる。
  • 関数の呼出しが行が行われないため、実行速度向上が期待できる。

参考文献