ホームページ  >  記事  >  バックエンド開発  >  C++ 関数のデフォルト パラメーターと変数パラメーターの基礎となる実装を調べる

C++ 関数のデフォルト パラメーターと変数パラメーターの基礎となる実装を調べる

PHPz
PHPzオリジナル
2024-04-22 21:15:011171ブラウズ

デフォルトのパラメータ: 関数定義でパラメータのデフォルト値を指定し、事前定義された定数を使用します。変数パラメータ: 省略記号を使用して示し、配列へのポインタにコンパイルし、受信パラメータをパッケージ化し、配列を走査してパラメータにアクセスします。 。

探究 C++ 函数默认参数和可变参数的底层实现

#C 関数のデフォルト パラメータと変数パラメータの基礎となる実装を調べる

#デフォルト パラメータ

デフォルトパラメータは、パラメータのデフォルト値を関数定義で指定できる仕組みです。これにより、実際のパラメータが渡されない場合に、関数がデフォルト値を使用できるようになります。

内部では、デフォルト パラメーター、つまり定数として事前定義されたパラメーターがコンパイラーによって実際に実装されます。コンパイラーは、デフォルトのパラメーターを使用して関数を呼び出すと、受信変数が渡されたかどうかを確認し、渡されなかった場合は、事前定義されたデフォルト値を使用します。

例:

void print_number(int num, int default_num = 10) {
  cout << (num ? num : default_num) << endl;
}

この関数を呼び出すとき、2 番目のパラメータを渡すか渡さないかを指定できます:

print_number(5); // 输出 5
print_number(0, 20); // 输出 20

可変パラメータ #変数パラメータは可変長パラメータとも呼ばれ、これにより関数は無限の数のパラメータを受け入れることができます。 C では、可変引数は省略記号 (

...

) で表されます。 内部では、可変個引数パラメーターは配列へのポインターにコンパイルされます。関数が呼び出されると、コンパイラは渡された引数をこの割り当てられた配列にパックします。その後、関数は配列を反復処理してパラメーターにアクセスできます。

例:

int sum_numbers(int count, ...) {
  int sum = 0;
  va_list args;
  va_start(args, count);  // 获取可变参数列表
  for (int i = 0; i < count; ++i) {
    sum += va_arg(args, int);  // 访问第 i 个参数
  }
  va_end(args);  // 清理可变参数列表
  return sum;
}

この関数を呼び出すときは、任意の数のパラメータを渡すことができます:

cout << sum_numbers(3, 1, 2, 3) << endl; // 输出 6
cout << sum_numbers(5, 10, 20, 30, 40, 50) << endl; // 输出 150

実用的なケース

現実の世界では、デフォルト パラメータと可変パラメータは幅広い用途に使用できます。例:

は、パラメーターが渡されない場合のエラーを回避するために代替値を指定するために使用されます。
  • さまざまな数の引数を処理できる、柔軟で適応性のある関数を作成するために使用されます。
  • は、Python の
  • print()
  • 関数など、可変長パラメーター リストを受け入れるライブラリ関数を作成するために使用されます。

以上がC++ 関数のデフォルト パラメーターと変数パラメーターの基礎となる実装を調べるの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。