🌻天国にいけるC++言語入門🌻 進化し続けるオブジェクト指向プログラミング ver3.2307
引数の数が異なっていれば同じ関数名の自作関数の定義を複数行うことができます。そのことを自作関数のオーバーロードといいます。
引数の数が異なっていれば同じ関数名の自作関数の定義を複数行うことができます。そのことを自作関数のオーバーロードといいます。
ソーラー「では続いては
戻り値の型は同じで
引数の数の異なる同じ関数名の自作関数を作製してみよう(´▽`*)/
関数名はfunctionとします。
自作関数functionの定義はどぉしよっかな~~~」
マックス「なら
1つ目の自作関数functionの定義は
void function(int a) {
cout << a << "\n";
return;
}
で
2つ目の自作関数functionの定義は
void function(int a, int b) {
cout << a + b << "\n";
return;
}
としてみる。
この2つの自作関数functionの定義でどうだ!」
ソーラー「さりげなく
どちらの自作関数functionの定義にも
引数の部分に
int aが
もちいられています。
この2つの自作関数functionを
main関数の前で記述して
プログラムをビルド実行したなら
"aが2回定義されています"
と
ビルドエラーが表示されそうなものですが・・・
(実際はそうはなりません)
果敢ですね」
マックス「ふっ」
にこやかにほほ笑むマックス。
マックス「もちろん 狙ってやったのさ 俺は突っ込み役だからなぁ
はぁ~はっはっはっはっはぁ~~~~~~~~~~
たのんだぞ てんCよ。」
てんC「
それでは
1つ目の自作関数functionの定義は
void function(int a) {
cout << a << "\n";
return;
}
で
2つ目の自作関数functionの定義は
void function(int a, int b) {
cout << a + b << "\n";
return;
}
とし
自作関数functionを実行してみます。
main関数内での
自作関数functionの実行方法は
自作関数functionの定義に用いれた引数の数に応じて
引数が1つのタイプなら
function(1);
引数が2つのタイプなら
function(1,2);
のように
2つの実行方法が考えられます。
function(1);
function(1,2);
どちらの実行方法を試してみられますか?」
マックス「😊てんCよ😊 両方だ」
ソーラー「その意気だ! てんC たのむよ~(´▽`*)」
てんC「はい、マックスさん、ソーラーさん
それでは
1つ目の自作関数functionの定義は
void function(int a) {
cout << a << "\n";
return;
}
とし
2つ目の自作関数functionの定義は
void function(int a, int b) {
cout << a + b << "\n";
return;
}
として
main関数内で
function(1);
function(1,2);
を実行してみたいと思います。
🌞 🌞 🌞 🌞 🌞 🌞 🌞 🌞 🌞 🌞
この場合
変数宣言
int a
が2回行われることになるので
ビルドエラーが表示されるのでしょうか?
皆さんはもうおわかりですね。(*´▽`*)
function(1);
function(1,2);
の実行結果を見物しましょう。
solarplexussより
🌞 🌞 🌞 🌞 🌞 🌞 🌞 🌞 🌞 🌞
#include <iostream>
using namespace std;
void function(int a) {
cout << a << "\n";
return;
}
void function(int a, int b) {
cout << a + b << "\n";
return;
}
int main() {
function(1);
function(1,2);
return 0;
}
ビルド実行結果
1
3
てんC「マックスさん、ソーラーさん😊
ビルド実行に成功しています。」
マックス「まさか
変数宣言
int a
が2回実行されているのに
ビルド実行できるとは思はなかったな。」
ソーラー「これは 意外な結果となったね。
自作関数functionの定義が異なっている場合
同じ変数名の変数宣言int aを
使用することができる
いいかえると
異なる自作メソッドfunctionでは
同じ変数名の変数aを用いてもかまわないんだね
2回 同じ変数aが作製されたことにはなりません」
😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊
前のエピソードでも述べましたように
異なる関数内で変数宣言された変数は
変数名が一緒でも
違う変数として
コンピュータに認識されます。
つまり
これらの2つの自作関数functionの定義
👇
void function(int a) {
cout << a << "\n";
return;
}
👇
void function(int a, int b) {
cout << a + b << "\n";
return;
}
内で
用いられている
変数a
は
変数名が一緒でも
異なる変数としてコンピュータに認識されています。
つまり
変数aを2回定義したことにはなりません。
😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊😊
ソーラー「では
自作関数functionの定義を
void function() {
int a=1;
cout << a << "\n";
return;
}
と
void function(int a, int b) {
cout << a + b << "\n";
return;
}
の2つ記述し
main関数内で
function();
function(1,2);
を
実行した場合でも
ちゃんとプログラムは実行されるのかな?」
マックス「ははあ
void function() {
int a=1;
cout << a << "\n";
return;
}
か・・・
void function(int a) {
cout << a << "\n";
return;
}
のように
引数部分に
変数宣言 int aをもってくるのではなく
ブロック{}内に
int a
をもってきたか・・・
この場合でも異なる自作関数内で
2回
変数宣言
int a
が
実行されることになるが
ビルドエラーを生じずに
プログラムを実行できるかどうかというわけか・・・」
ソーラー「そうなんだ(´▽`*)
プログラムの実行をお願い、てんC」
てんC「はいっ
自作関数functionの定義を
void function() {
int a=1;
cout << a << "\n";
return;
}
と
void function(int a, int b) {
cout << a + b << "\n";
return;
}
の2つを記述して
main関数内で
function();
function(1,2);
を
実行してみます。
#include <iostream>
using namespace std;
void function() {
int a=1;
cout << a << "\n";
return;
}
void function(int a, int b) {
cout << a + b << "\n";
return;
}
int main() {
function();
function(1,2);
return 0;
}
ビルド実行結果
1
3
ソーラー「やったね!
異なる自作関数内で変数宣言された変数は
変数名が一緒でも
互いに異なる変数としてコンピュータに認識されるんだね。」
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます