こちらの記事は以下の書籍を参考にアウトプットとして執筆しました。
新・明解C++入門
コード解説
unsigned x
unsignedは符号なし整数型で0と1の整数値を表現する
x & 1U
1Uは最下位ビットが1のみである符号なし整数
xと1Uの論理積を求める
論理積は両方とも1なら1
xの最下位ビットが1なら
x >>= 1;
xの最下位ビットが1ならxの全ビットを1ビット右にシフト
~0U
は全ビットが0である符号なし整数 0Uの全ビットを反転したもの
参照と参照渡し
参照
int x=1;
int& a=x;
&を付けることで別名とすることができる
参照渡し
関数で仮引数へ&を付けることで参照渡しとすることができる
void func(int&a){}
有効範囲と記憶域期間
有効範囲
スコープのこと。
- ファイル有効範囲
- ブロック有効範囲
有効範囲解決演算子
名称 | 説明 |
---|---|
::x | 大域的なxにアクセスする |
x::y | 名前空間x中のyにアクセス |
記憶域期間
変数の生存期間のことで3つある
静的記憶域期間
関数外で宣言・定義された、もしくはstatic(static int a)をつけて関数中で宣言・定義されたもの
プログラムを実行して終了までの寿命
自動記憶域期間
関数内で宣言・定義されたもの
プログラムが宣言を通過するしてから}までいくと破棄される
多重定義とインライン関数
多重定義
多重定義は同じ名前の関数を複数定義すること
呼び出しの区別はシグネチャ(仮引数の並びなどの情報でどの関数を呼び出すかを区別する)
int max(int a,int b){}
int max(int a,int b,int c){}
返す型が違っても、引数の個数方が同じ関数は手重定義できない
//多重定義はできない
int max(int a,int b){}
double max(int a,int b){}
インライン関数
関数を使用するメリットはタイプ数の減少など挙げられるが、メモリをわずかながらでも消費してしまうなどのデメリットもある。インライン関数はそうした関数のデメリットを解決する関数
インライン関数は関数定義にinlineをつけるだけ
inline int max(int a){}
インライン関数は実行効率を上げるために使われる事が多い