🌻天国にいけるC++言語入門🌻 進化し続けるオブジェクト指向プログラミング ver3.2307
デフォルト引数の設定は右側の引数から順次行っていくというルールがあります つまり自作関数の引数の初期化は右側の引数から順次行う必要があります
デフォルト引数の設定は右側の引数から順次行っていくというルールがあります つまり自作関数の引数の初期化は右側の引数から順次行う必要があります
ソーラー「それでは
自作関数fの定義を
void f(int x, int y = 1, int z) {
cout << x << "をとりこみました。\n";
cout << y << "をとりこみました。\n";
cout << z << "をとりこみました。\n";
}
から
void f(int x, int y, int z=1) {
cout << x << "をとりこみました。\n";
cout << y << "をとりこみました。\n";
cout << z << "をとりこみました。\n";
}
に変更して
プログラムを実行してみます。」
#include <iostream>
using namespace std;
void f(int x, int y, int z=1) {
cout << x << "をとりこみました。\n";
cout << y << "をとりこみました。\n";
cout << z << "をとりこみました。\n";
}
int main() {
f(5,6,7);
return 0;
}
ビルド実行結果
5をとりこみました。
6をとりこみました。
7をとりこみました。
ソーラー「やったね!
うまくプログラムをビルド実行できました。」
てんC「きゃっ きゃつ(´▽`*)/」
solarplexuss「わぁ ほんとうだ
なんで~~
不思議だね」
solarplexuss「
なんで
自作関数fの定義が
void f(int x=1, int y, int z) {
cout << x << "をとりこみました。\n";
cout << y << "をとりこみました。\n";
cout << z << "をとりこみました。\n";
}
や
void f(int x, int y=1, int z) {
cout << x << "をとりこみました。\n";
cout << y << "をとりこみました。\n";
cout << z << "をとりこみました。\n";
}
では
f(5,6,7);
を実行してもビルドエラーがでて
void f(int x, int y, int z=1) {
cout << x << "をとりこみました。\n";
cout << y << "をとりこみました。\n";
cout << z << "をとりこみました。\n";
}
としたときは
f(5,6,7);
を実行したとき
ビルドエラーがでないのかな?」
てんC「うふふ(´▽`*)」
solarplexuss「う~・・・・・・・・」
ソーラー「じゃじゃ~~ん
それでは
その理由を発表したいと思います。
実は
自作関数のデフォルト引数の設定は
自作関数の定義が
void f(int x, int y, int z) {
cout << x << "をとりこみました。\n";
cout << y << "をとりこみました。\n";
cout << z << "をとりこみました。\n";
}
のように
3つの変数宣言
int x
int y
int z
が引数に用いられているなら
int z👇
int y👇
int x👇
という順番で
デフォルト引数に設定していく必要があります
つまり
自作関数の引数部分の()内の
右側の変数宣言から
順番にデフォルト引数に設定していく必要があります
自作関数の引数部分が
void f(int x, int y, int z)と設定されているなら
void f(int x, int y, int z=1)
void f(int x, int y=1, int z=1)
void f(int x=1, int y=1, int z=1)
のように
デフォルト引数を設定する必要があります。
ですので
void f(int x=1, int y, int z)
void f(int x, int y=1, int z)
void f(int x=1, int y=1, int z)
void f(int x=1, int y, int z=1)
のように
右側の変数宣言から
順番にデフォルト引数に設定していない場合は
プログラムを実行すると
ビルドエラーが表示されます。
試しに
自作関数の引数を
void f(int x=1, int y=1, int z) {
cout << x << "をとりこみました。\n";
cout << y << "をとりこみました。\n";
cout << z << "をとりこみました。\n";
}
のように
デフォルト引数に設定してプログラムを実行すると
ビルドエラーが表示されます。
#include <iostream>
using namespace std;
void f(int x=1, int y=1, int z) {
cout << x << "をとりこみました。\n";
cout << y << "をとりこみました。\n";
cout << z << "をとりこみました。\n";
}
int main() {
f(5,6,7);
return 0;
}
ビルド実行結果
エラー C2548 'f': 3 番目の引数に対して既定の引数がありません。
エラー (アクティブ) E0306 既定の引数がパラメーター リストの末尾にありません
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます