C++ 名前空間と関数のオーバーロード

1. 名前空間

1. 名前の競合はなぜ発生するのですか?

  変数に名前を付ける場合、さまざまな方法を使用できますが、初心者はライブラリ内の名前付き変数を理解できず、この時点で名前の競合が発生します。

2. C++ で名前の競合を解決する 2 つの方法

(1) 名前空間ドメインを拡張する
  名前空間ドメインを拡張してローカル変数をグローバル変数にする

構文: 拡張する必要がある名前空間 + スペースドメインを使用

(2) アクセス名前空間ドメインを指定する

構文: (名前空間フィールドを指定)::a

(3) 指定した名前空間ドメインを展開します。

構文: using std::(ライブラリ関数内の特定の名前空間);

ある名前空間ドメインを展開すると、両方がグローバル変数の場合、参照が不明瞭になる場合があります。したがって、ライブラリ関数の特定の部分のみを拡張する必要があり、すべての拡張によって生じる名前の競合を回避するように努めます。

2. 関数のオーバーロード

1.コンセプト

関数のオーバーロード: これは関数の特殊なケースです。C++ では、同様の関数を持つ同じ名前の複数の関数を同じスコープ内で宣言できます。同じ名前のこれらの関数には、異なる仮パラメータ リスト (パラメータ番号、型、または型の順序) があります。 )、関数の実装は、さまざまなデータ型の問題に似ています。

  C 言語では、add1()、add2() などの名前の異なる関数をよく使用しますが、C++ はこれを最適化します。つまり、関数のパラメータが異なるだけでよく、戻り値の型を考慮する必要はありません。

2. C++ がオーバーロードをサポートしているのはなぜですか?

  C コンパイラが関数定義を検索するとき、関数名だけがあり、それがどの関数であるかはわかりません。C++ コンパイラーは関数定義を見つけると、内部のパラメーターも含めて、定義の一意性を保証します。

3、デフォルト機能

1.コンセプト

デフォルト関数は、クラス定義でデフォルトのパラメーター値を提供するメンバー関数であり、呼び出し時にこれらのパラメーターを省略できます。一部のパラメータを省略した場合は、定義内のデフォルト値が使用されます。

(1)全缺省

(2) セミデフォルト - 右から左へのデフォルトのみ可能

2. 利点

1. コードが簡潔で読みやすい: デフォルトの関数によりコードの長さが短縮され、コードがより簡潔で読みやすくなります。
2. コードの繰り返しを減らす: デフォルトのパラメーターを使用して関数を定義すると、同様のオーバーロードされた関数を複数作成する必要がなくなり、変更が必要な場合に 1 つの関数を変更するだけで済みます。
3. 優れたスケーラビリティ: 既存のコードを壊すことなく、新しいパラメータを簡単に追加したり、デフォルト値を変更したりして、より優れたスケーラビリティを実現できます。
4. 便利な呼び出し: デフォルト関数を使用する場合、いくつかの不要なパラメータを省略できるため、関数呼び出しがより便利になります。

4. 引用

1.コンセプト

参照は変数の新しい定義ではなく、既存の変数のエイリアスです。コンパイラは参照変数用にメモリ空間をオープンせず、参照する変数と同じメモリ空間を共有します。

  メモリ空間の一部は共有されており、エイリアスを変更すると、元のポイントされた内容も変更されます。

2. 利点

1. メモリ空間の節約: 参照はポインタのように追加のメモリ空間を占有しません。参照はターゲット オブジェクトの単なるエイリアスであるため、メモリ使用量は増加しません。
2. コードを簡素化する: 参照によってコードの記述が簡素化され、ポインターの参照を解除する頻繁な操作が回避され、コードがより簡潔で読みやすくなります。
3. より安全: ポインターを使用する場合、ポインターはあらゆる種類のデータを指すことができるため、一定のリスクが伴います。参照は特定の種類のデータのみを指すことができるため、より安全で信頼性が高くなります。
4. 関数パラメータの受け渡しの利便性: 参照をパラメータとして渡す関数は、関数内で多くのコピー操作を行わずに元のデータの変更を実現できるため、プログラムの効率が向上します。

  C++ の学習生活を少しずつ記録していくこのブログはここで終了です。次のブログを楽しみにしています

おすすめ

転載: blog.csdn.net/Front123456/article/details/130182490