C++ 値渡し、ポインタ渡し、参照渡しを使い分けよう
https://qiita.com/agate-pris/items/05948b7d33f3e88b8967
・ポインタによるメモリ確保は3つの事故ポイントが存在し、いずれもアプリの異常終了につながる危険なポイントとなる。
・初期化忘れ
・メモリ解放忘れ ※配列型のメモリ解放記法ミスもあり得る
・メモリの二重解放
・スマートポインタを積極的に利用することで自動的にメモリを解放できる。
この時ポインタ引き渡しでなく参照引き渡しとなる。
・関数のオーバーロードを行うことでサブクラスで独自の定義が可能
→ただし、10-2の最後のような事故が発生しうる。明示的にスーパークラスの関数として呼ぶことで回避する。
(10-2現時点)sub.setValue(100); → (修正)sub.SuperClass::setValue(100);
・参照渡しについて
https://qiita.com/agate-pris/items/05948b7d33f3e88b8967
→参照渡しはnullチェックを行わない点でポインタ引き渡しも事故が少なくなる。
→講座資料P65と動画内補足より、左辺値参照に引き渡せるものは決まりがある。
・左辺値参照について
https://qiita.com/luftfararen/items/1de032bc6e3eb69ca672
→左辺値参照に引き渡せるのは、左辺値(関数とか変数とか)か左辺値参照。
・ヘッダの二重インクルード防止について
https://qiita.com/MoriokaReimen/items/7c83ebd0fbae44d8532d
→デフォルトで入ってくる"#pragma once"がサポートしていれば利用する。
利用できない場合は、マクロ定義による#ifndefine→#define→#endifで二重インクルードガードを行う。